Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
/jitiPublic

Runtime TypeScript and ESM support for Node.js

License

NotificationsYou must be signed in to change notification settings

unjs/jiti

Repository files navigation

npm versionnpm downloadsbundle size

This is the active development branch. Check outjiti/v1 for legacy v1 docs and code.

🌟 Used in

Docusaurus,ESLint,FormKit,Histoire,Knip,Nitro,Nuxt,PostCSS loader,Rsbuild,Size Limit,Slidev,Tailwindcss,Tokenami,UnoCSS,WXT,Winglang,Graphql code generator,Lingui,Scaffdog,Storybook,...UnJS ecosystem,...60M+ npm monthly downloads,...6M+ public repositories.

✅ Features

  • Seamless TypeScript and ESM syntax support for Node.js
  • Seamless interoperability between ESM and CommonJS
  • Asynchronous API to replaceimport()
  • Synchronous API to replacerequire() (deprecated)
  • Super slim and zero dependency
  • Custom resolve aliases
  • Smart syntax detection to avoid extra transforms
  • Node.js nativerequire.cache integration
  • Filesystem transpile with hard disk caches
  • ESM Loader support
  • JSX support (opt-in)

Important

To enhance compatibility, jiti>=2.1 enabledinteropDefault using a new Proxy method. If you migrated to2.0.0 earlier, this might have caused behavior changes. In case of any issues during the upgrade, pleasereport so we can investigate to solve them. 🙏🏼

💡 Usage

CLI

You can usejiti CLI to quickly run any script with TypeScript and native ESM support!

npx jiti ./index.ts

Programmatic

Initialize a jiti instance:

// ESMimport{createJiti}from"jiti";constjiti=createJiti(import.meta.url);// CommonJS (deprecated)const{ createJiti}=require("jiti");constjiti=createJiti(__filename);

Import (async) and resolve with ESM compatibility:

// jiti.import(id) is similar to import(id)constmod=awaitjiti.import("./path/to/file.ts");// jiti.esmResolve(id) is similar to import.meta.resolve(id)constresolvedPath=jiti.esmResolve("./src");

If you need the default export of module, you can usejiti.import(id, { default: true }) as shortcut tomod?.default ?? mod.

// shortcut to mod?.default ?? modconstmodDefault=awaitjiti.import("./path/to/file.ts",{default:true});

CommonJS (sync & deprecated):

// jiti() is similar to require(id)constmod=jiti("./path/to/file.ts");// jiti.resolve() is similar to require.resolve(id)constresolvedPath=jiti.resolve("./src");

You can also pass options as the second argument:

constjiti=createJiti(import.meta.url,{debug:true});

Register global ESM loader

You can globally register jiti usingglobal hooks. (Important: Requires Node.js > 20)

import"jiti/register";

Or:

node --import jiti/register index.ts

🎈jiti/native

You can aliasjiti tojiti/native to directly depend on runtime'simport.meta.resolve and dynamicimport() support. This allows easing up the ecosystem transition to runtime native support by giving the same API of jiti.

⚙️ Options

debug

  • Type: Boolean
  • Default:false
  • Environment variable:JITI_DEBUG

Enable verbose logging. You can useJITI_DEBUG=1 <your command> to enable it.

fsCache

  • Type: Boolean | String
  • Default:true
  • Environment variable:JITI_FS_CACHE

Filesystem source cache (enabled by default)

By default (when istrue), jiti usesnode_modules/.cache/jiti (if exists) or{TMP_DIR}/jiti.

Note: It is recommended that this option be enabled for better performance.

moduleCache

  • Type: String
  • Default:true
  • Environment variable:JITI_MODULE_CACHE

Runtime module cache (enabled by default).

Disabling allows editing code and importing the same module multiple times.

When enabled, jiti integrates with Node.js native CommonJS cache-store.

transform

  • Type: Function
  • Default: Babel (lazy loaded)

Transform function. Seesrc/babel for more details

sourceMaps

  • Type: Boolean
  • Defaultfalse
  • Environment variable:JITI_SOURCE_MAPS

Add inline source map to transformed source for better debugging.

interopDefault

  • Type: Boolean
  • Default:true
  • Environment variable:JITI_INTEROP_DEFAULT

Jiti combines module exports with thedefault export using an internal Proxy to improve compatibility with mixed CJS/ESM usage. You can check the current implementationhere.

alias

  • Type: Object
  • Default: -
  • Environment variable:JITI_ALIAS

You can also pass an object to the environment variable for inline config. Example:JITI_ALIAS='{"~/*": "./src/*"}' jiti ....

Custom alias map used to resolve IDs.

nativeModules

  • Type: Array
  • Default: ['typescript']
  • Environment variable:JITI_NATIVE_MODULES

List of modules (withinnode_modules) to always use nativerequire() for them.

transformModules

  • Type: Array
  • Default: []
  • Environment variable:JITI_TRANSFORM_MODULES

List of modules (withinnode_modules) to transform them regardless of syntax.

importMeta

Parent module'simport.meta context to use for ESM resolution. (only used forjiti/native import).

tryNative

  • Type: Boolean
  • Default: Enabled if bun is detected
  • Environment variable:JITI_TRY_NATIVE

Try to use native require and import without jiti transformations first.

jsx

  • Type: Boolean | {options}
  • Default:false
  • Environment Variable:JITI_JSX

Enable JSX support using@babel/plugin-transform-react-jsx.

Seetest/fixtures/jsx for framework integration examples.

Development

  • Clone this repository
  • EnableCorepack usingcorepack enable
  • Install dependencies usingpnpm install
  • Runpnpm dev
  • Runpnpm jiti ./test/path/to/file.ts

License

Published under theMIT license.Made by@pi0 andcommunity 💛


[8]ページ先頭

©2009-2025 Movatter.jp