{"_id":"@rexxars/jiti","name":"@rexxars/jiti","dist-tags":{"latest":"2.6.2"},"versions":{"2.6.2":{"name":"@rexxars/jiti","version":"2.6.2","description":"Runtime typescript and ESM support for Node.js","repository":{"type":"git","url":"git+https://github.com/unjs/jiti.git"},"license":"MIT","type":"module","exports":{".":{"import":{"types":"./lib/jiti.d.mts","default":"./lib/jiti.mjs"},"require":{"types":"./lib/jiti.d.cts","default":"./lib/jiti.cjs"}},"./register":{"types":"./lib/jiti-register.d.mts","import":"./lib/jiti-register.mjs"},"./native":{"types":"./lib/jiti.d.mts","import":"./lib/jiti-native.mjs"},"./package.json":"./package.json"},"main":"./lib/jiti.cjs","module":"./lib/jiti.mjs","types":"./lib/jiti.d.cts","typesVersions":{"*":{"register":["./lib/jiti-register.d.mts"],"native":["./lib/jiti.d.mts"]}},"bin":{"jiti":"lib/jiti-cli.mjs"},"scripts":{"bench":"node test/bench.mjs && deno -A test/bench.mjs && bun --bun test/bench.mjs","build":"pnpm clean && pnpm rspack","clean":"rm -rf dist","dev":"pnpm clean && pnpm rspack --watch","jiti":"JITI_DEBUG=1 JITI_JSX=1 lib/jiti-cli.mjs","lint":"eslint . && prettier -c src lib test stubs","lint:fix":"eslint --fix . && prettier -w src lib test stubs","prepack":"pnpm build","release":"pnpm build && pnpm test && changelogen --release --push --publish","test":"pnpm lint && pnpm test:types && vitest run --coverage && pnpm test:node-register && pnpm test:bun && pnpm test:native","test:bun":"bun --bun test test/bun","test:native":"pnpm test:native:bun && pnpm test:native:node && pnpm test:native:deno","test:native:bun":"bun --bun test test/native/bun.test.ts","test:native:deno":"deno test -A --no-check test/native/deno.test.ts","test:native:node":"node --test --experimental-strip-types test/native/node.test.ts","test:node-register":"JITI_JSX=1 node --test test/node-register.test.mjs","test:types":"tsc --noEmit"},"devDependencies":{"@babel/core":"^7.28.4","@babel/helper-module-imports":"^7.27.1","@babel/helper-module-transforms":"^7.28.3","@babel/helper-plugin-utils":"^7.27.1","@babel/helper-simple-access":"^7.27.1","@babel/plugin-proposal-decorators":"^7.28.0","@babel/plugin-syntax-class-properties":"^7.12.13","@babel/plugin-syntax-import-assertions":"^7.27.1","@babel/plugin-syntax-jsx":"^7.27.1","@babel/plugin-transform-export-namespace-from":"^7.27.1","@babel/plugin-transform-react-jsx":"^7.27.1","@babel/plugin-transform-typescript":"^7.28.0","@babel/preset-typescript":"^7.27.1","@babel/template":"^7.27.2","@babel/traverse":"^7.28.4","@babel/types":"^7.28.4","@rspack/cli":"^1.5.8","@rspack/core":"^1.5.8","@types/babel__core":"^7.20.5","@types/babel__helper-module-imports":"^7.18.3","@types/babel__helper-plugin-utils":"^7.10.3","@types/babel__template":"^7.4.4","@types/babel__traverse":"^7.28.0","@types/node":"^24.6.1","@vitest/coverage-v8":"^3.2.4","acorn":"^8.15.0","babel-plugin-parameter-decorator":"^1.0.16","changelogen":"^0.6.2","config":"^4.1.1","consola":"^3.4.2","defu":"^6.1.4","destr":"^2.0.5","escape-string-regexp":"^5.0.0","eslint":"^9.36.0","eslint-config-unjs":"^0.5.0","estree-walker":"^3.0.3","etag":"^1.8.1","fast-glob":"^3.3.3","get-tsconfig":"^4.13.6","is-installed-globally":"^1.0.0","mime":"^4.1.0","mlly":"^1.8.0","moment-timezone":"^0.6.0","nano-jsx":"^0.2.0","pathe":"^2.0.3","pkg-types":"^2.3.0","preact":"^10.27.2","preact-render-to-string":"^6.6.2","prettier":"^3.6.2","react":"^19.1.1","react-dom":"^19.1.1","reflect-metadata":"^0.2.2","solid-js":"^1.9.9","std-env":"^3.9.0","terser-webpack-plugin":"^5.3.14","tinyexec":"^1.0.1","ts-loader":"^9.5.4","typescript":"^5.9.3","vitest":"^3.2.4","vue":"^3.5.22","yoctocolors":"^2.1.2","zod":"^4.1.11"},"packageManager":"pnpm@10.17.1","publishConfig":{"access":"public"},"gitHead":"77c61d3c38ee5e69f261069a680e16ad4b444178","_id":"@rexxars/jiti@2.6.2","bugs":{"url":"https://github.com/unjs/jiti/issues"},"homepage":"https://github.com/unjs/jiti#readme","_nodeVersion":"24.13.1","_npmVersion":"11.8.0","dist":{"integrity":"sha512-B9FdXL9Z+TnaT+H1Z91nd68tjaD5q3G0ZC7e1Se3/rUur70DSZj++54HhkfoNIA5n/Y1TMllKKGk9qYsOVK2Lw==","shasum":"7785f4a8aa7cd4f8eaea83744435b17a8443b771","tarball":"https://registry.npmjs.org/@rexxars/jiti/-/jiti-2.6.2.tgz","fileCount":15,"unpackedSize":1728129,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCO1OXRJC9aHPCGQjRRKegTbN4x/ClEQTBjmscd5VBTygIhAIvf5L3u7f7UMzQmNBPsEb82aCN79ii1auLPxfNFP7ZV"}]},"_npmUser":{"name":"rexxars","email":"espen@hovlandsdal.com"},"directories":{},"maintainers":[{"name":"rexxars","email":"espen@hovlandsdal.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/jiti_2.6.2_1771550299347_0.5324963204953339"},"_hasShrinkwrap":false}},"time":{"created":"2026-02-20T01:18:19.259Z","2.6.2":"2026-02-20T01:18:19.573Z","modified":"2026-02-20T01:18:19.784Z"},"maintainers":[{"name":"rexxars","email":"espen@hovlandsdal.com"}],"description":"Runtime typescript and ESM support for Node.js","homepage":"https://github.com/unjs/jiti#readme","repository":{"type":"git","url":"git+https://github.com/unjs/jiti.git"},"bugs":{"url":"https://github.com/unjs/jiti/issues"},"license":"MIT","readme":"# jiti\n\n<!-- automd:badges color=F0DB4F bundlephobia -->\n\n[![npm version](https://img.shields.io/npm/v/jiti?color=F0DB4F)](https://npmjs.com/package/jiti)\n[![npm downloads](https://img.shields.io/npm/dm/jiti?color=F0DB4F)](https://npmjs.com/package/jiti)\n[![bundle size](https://img.shields.io/bundlephobia/minzip/jiti?color=F0DB4F)](https://bundlephobia.com/package/jiti)\n\n<!-- /automd -->\n\n> This is the active development branch. Check out [jiti/v1](https://github.com/unjs/jiti/tree/v1) for legacy v1 docs and code.\n\n## 🌟 Used in\n\n[Docusaurus](https://docusaurus.io/), [ESLint](https://github.com/eslint/eslint), [FormKit](https://formkit.com/), [Histoire](https://histoire.dev/), [Knip](https://knip.dev/), [Nitro](https://nitro.unjs.io/), [Nuxt](https://nuxt.com/), [PostCSS loader](https://github.com/webpack-contrib/postcss-loader), [Rsbuild](https://rsbuild.dev/), [Size Limit](https://github.com/ai/size-limit), [Slidev](https://sli.dev/), [Tailwindcss](https://tailwindcss.com/), [Tokenami](https://github.com/tokenami/tokenami), [UnoCSS](https://unocss.dev/), [WXT](https://wxt.dev/), [Winglang](https://www.winglang.io/), [Graphql code generator](https://the-guild.dev/graphql/codegen), [Lingui](https://lingui.dev/), [Scaffdog](https://scaff.dog/), [Storybook](https://storybook.js.org), [...UnJS ecosystem](https://unjs.io/), [...60M+ npm monthly downloads](https://npm.chart.dev/jiti), [...6M+ public repositories](https://github.com/unjs/jiti/network/dependents).\n\n## ✅ Features\n\n- Seamless TypeScript and ESM syntax support for Node.js\n- Seamless interoperability between ESM and CommonJS\n- Asynchronous API to replace `import()`\n- Synchronous API to replace `require()` (deprecated)\n- Super slim and zero dependency\n- Custom resolve aliases\n- Smart syntax detection to avoid extra transforms\n- Node.js native `require.cache` integration\n- Filesystem transpile with hard disk caches\n- ESM Loader support\n- JSX support (opt-in)\n\n> [!IMPORTANT]\n> To enhance compatibility, jiti `>=2.1` enabled [`interopDefault`](#interopdefault) using a new Proxy method. If you migrated to `2.0.0` earlier, this might have caused behavior changes. In case of any issues during the upgrade, please [report](https://github.com/unjs/jiti/issues) so we can investigate to solve them. 🙏🏼\n\n## 💡 Usage\n\n### CLI\n\nYou can use `jiti` CLI to quickly run any script with TypeScript and native ESM support!\n\n```bash\nnpx jiti ./index.ts\n```\n\n### Programmatic\n\nInitialize a jiti instance:\n\n```js\n// ESM\nimport { createJiti } from \"jiti\";\nconst jiti = createJiti(import.meta.url);\n\n// CommonJS (deprecated)\nconst { createJiti } = require(\"jiti\");\nconst jiti = createJiti(__filename);\n```\n\nImport (async) and resolve with ESM compatibility:\n\n```js\n// jiti.import(id) is similar to import(id)\nconst mod = await jiti.import(\"./path/to/file.ts\");\n\n// jiti.esmResolve(id) is similar to import.meta.resolve(id)\nconst resolvedPath = jiti.esmResolve(\"./src\");\n```\n\nIf you need the default export of module, you can use `jiti.import(id, { default: true })` as shortcut to `mod?.default ?? mod`.\n\n```js\n// shortcut to mod?.default ?? mod\nconst modDefault = await jiti.import(\"./path/to/file.ts\", { default: true });\n```\n\nCommonJS (sync & deprecated):\n\n```js\n// jiti() is similar to require(id)\nconst mod = jiti(\"./path/to/file.ts\");\n\n// jiti.resolve() is similar to require.resolve(id)\nconst resolvedPath = jiti.resolve(\"./src\");\n```\n\nYou can also pass options as the second argument:\n\n```js\nconst jiti = createJiti(import.meta.url, { debug: true });\n```\n\n### Register global ESM loader\n\nYou can globally register jiti using [global hooks](https://nodejs.org/api/module.html#initialize). (Important: Requires Node.js > 20)\n\n```js\nimport \"jiti/register\";\n```\n\nOr:\n\n```bash\nnode --import jiti/register index.ts\n```\n\n## 🎈 `jiti/native`\n\nYou can alias `jiti` to `jiti/native` to directly depend on runtime's [`import.meta.resolve`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/import.meta/resolve) and dynamic [`import()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/import) support. This allows easing up the ecosystem transition to runtime native support by giving the same API of jiti.\n\n## ⚙️ Options\n\n### `debug`\n\n- Type: Boolean\n- Default: `false`\n- Environment variable: `JITI_DEBUG`\n\nEnable verbose logging. You can use `JITI_DEBUG=1 <your command>` to enable it.\n\n### `fsCache`\n\n- Type: Boolean | String\n- Default: `true`\n- Environment variable: `JITI_FS_CACHE`\n\nFilesystem source cache (enabled by default)\n\nBy default (when is `true`), jiti uses `node_modules/.cache/jiti` (if exists) or `{TMP_DIR}/jiti`.\n\n**Note:** It is recommended that this option be enabled for better performance.\n\n### `rebuildFsCache`\n\n- Type: Boolean\n- Default: `false`\n- Environment variable: `JITI_REBUILD_FS_CACHE`\n\nRebuild filesystem source cache created by `fsCache`.\n\n### `moduleCache`\n\n- Type: String\n- Default: `true`\n- Environment variable: `JITI_MODULE_CACHE`\n\nRuntime module cache (enabled by default).\n\nDisabling allows editing code and importing the same module multiple times.\n\nWhen enabled, jiti integrates with Node.js native CommonJS cache-store.\n\n### `transform`\n\n- Type: Function\n- Default: Babel (lazy loaded)\n\nTransform function. See [src/babel](./src/babel.ts) for more details\n\n### `sourceMaps`\n\n- Type: Boolean\n- Default `false`\n- Environment variable: `JITI_SOURCE_MAPS`\n\nAdd inline source map to transformed source for better debugging.\n\n### `interopDefault`\n\n- Type: Boolean\n- Default: `true`\n- Environment variable: `JITI_INTEROP_DEFAULT`\n\nJiti combines module exports with the `default` export using an internal Proxy to improve compatibility with mixed CJS/ESM usage. You can check the current implementation [here](https://github.com/unjs/jiti/blob/main/src/utils.ts#L105).\n\n### `alias`\n\n- Type: Object\n- Default: -\n- Environment variable: `JITI_ALIAS`\n\nYou can also pass an object to the environment variable for inline config. Example: `JITI_ALIAS='{\"~/*\": \"./src/*\"}' jiti ...`.\n\nCustom alias map used to resolve IDs.\n\n### `nativeModules`\n\n- Type: Array\n- Default: ['typescript']\n- Environment variable: `JITI_NATIVE_MODULES`\n\nList of modules (within `node_modules`) to always use native `require()` for them.\n\n### `transformModules`\n\n- Type: Array\n- Default: []\n- Environment variable: `JITI_TRANSFORM_MODULES`\n\nList of modules (within `node_modules`) to transform them regardless of syntax.\n\n### `importMeta`\n\nParent module's [`import.meta`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/import.meta) context to use for ESM resolution. (only used for `jiti/native` import).\n\n### `tryNative`\n\n- Type: Boolean\n- Default: Enabled if bun is detected\n- Environment variable: `JITI_TRY_NATIVE`\n\nTry to use native require and import without jiti transformations first.\n\n### `jsx`\n\n- Type: Boolean | {options}\n- Default: `false`\n- Environment Variable: `JITI_JSX`\n\nEnable JSX support using [`@babel/plugin-transform-react-jsx`](https://babeljs.io/docs/babel-plugin-transform-react-jsx).\n\nSee [`test/fixtures/jsx`](./test/fixtures/jsx) for framework integration examples.\n\n## Development\n\n- Clone this repository\n- Enable [Corepack](https://github.com/nodejs/corepack) using `corepack enable`\n- Install dependencies using `pnpm install`\n- Run `pnpm dev`\n- Run `pnpm jiti ./test/path/to/file.ts`\n\n## License\n\n<!-- automd:contributors license=MIT author=\"pi0\" -->\n\nPublished under the [MIT](https://github.com/unjs/jiti/blob/main/LICENSE) license.\nMade by [@pi0](https://github.com/pi0) and [community](https://github.com/unjs/jiti/graphs/contributors) 💛\n<br><br>\n<a href=\"https://github.com/unjs/jiti/graphs/contributors\">\n<img src=\"https://contrib.rocks/image?repo=unjs/jiti\" />\n</a>\n\n<!-- /automd -->\n\n<!-- automd:with-automd -->\n","readmeFilename":"README.md","_rev":"1-bf484b42c13397bd6160e78c51c23b99"}