165 lines
3.8 KiB
Markdown
165 lines
3.8 KiB
Markdown
|
# jiti
|
||
|
|
||
|
[![npm version][npm-version-src]][npm-version-href]
|
||
|
[![npm downloads][npm-downloads-src]][npm-downloads-href]
|
||
|
[![bundle][bundle-src]][bundle-href]
|
||
|
[![License][license-src]][license-href]
|
||
|
|
||
|
Runtime Typescript and ESM support for Node.js.
|
||
|
|
||
|
> [!IMPORTANT]
|
||
|
> This is the support branch for jiti v1. Check out [jiti/main](https://github.com/unjs/jiti/tree/main) for the latest version and [unjs/jiti#174](https://github.com/unjs/jiti/issues/174) for the roadmap.
|
||
|
|
||
|
## Features
|
||
|
|
||
|
- Seamless typescript and ESM syntax support
|
||
|
- Seamless interoperability between ESM and CommonJS
|
||
|
- Synchronous API to replace `require`
|
||
|
- Super slim and zero dependency
|
||
|
- Smart syntax detection to avoid extra transforms
|
||
|
- CommonJS cache integration
|
||
|
- Filesystem transpile hard cache
|
||
|
- V8 compile cache
|
||
|
- Custom resolve alias
|
||
|
|
||
|
## Usage
|
||
|
|
||
|
### Programmatic
|
||
|
|
||
|
```js
|
||
|
const jiti = require("jiti")(__filename);
|
||
|
|
||
|
jiti("./path/to/file.ts");
|
||
|
```
|
||
|
|
||
|
You can also pass options as second argument:
|
||
|
|
||
|
```js
|
||
|
const jiti = require("jiti")(__filename, { debug: true });
|
||
|
```
|
||
|
|
||
|
### CLI
|
||
|
|
||
|
```bash
|
||
|
jiti index.ts
|
||
|
# or npx jiti index.ts
|
||
|
```
|
||
|
|
||
|
### Register require hook
|
||
|
|
||
|
```bash
|
||
|
node -r jiti/register index.ts
|
||
|
```
|
||
|
|
||
|
Alternatively, you can register `jiti` as a require hook programmatically:
|
||
|
|
||
|
```js
|
||
|
const jiti = require("jiti")();
|
||
|
const unregister = jiti.register();
|
||
|
```
|
||
|
|
||
|
## Options
|
||
|
|
||
|
### `debug`
|
||
|
|
||
|
- Type: Boolean
|
||
|
- Default: `false`
|
||
|
- Environment Variable: `JITI_DEBUG`
|
||
|
|
||
|
Enable debug to see which files are transpiled
|
||
|
|
||
|
### `cache`
|
||
|
|
||
|
- Type: Boolean | String
|
||
|
- Default: `true`
|
||
|
- Environment Variable: `JITI_CACHE`
|
||
|
|
||
|
Use transpile cache
|
||
|
|
||
|
If set to `true` will use `node_modules/.cache/jiti` (if exists) or `{TMP_DIR}/node-jiti`
|
||
|
|
||
|
### `esmResolve`
|
||
|
|
||
|
- Type: Boolean | String
|
||
|
- Default: `false`
|
||
|
- Environment Variable: `JITI_ESM_RESOLVE`
|
||
|
|
||
|
Using esm resolution algorithm to support `import` condition.
|
||
|
|
||
|
### `transform`
|
||
|
|
||
|
- Type: Function
|
||
|
- Default: Babel (lazy loaded)
|
||
|
|
||
|
Transform function. See [src/babel](./src/babel.ts) for more details
|
||
|
|
||
|
### `sourceMaps`
|
||
|
|
||
|
- Type: Boolean
|
||
|
- Default `false`
|
||
|
- Environment Variable: `JITI_SOURCE_MAPS`
|
||
|
|
||
|
Add inline source map to transformed source for better debugging.
|
||
|
|
||
|
### `interopDefault`
|
||
|
|
||
|
- Type: Boolean
|
||
|
- Default: `false`
|
||
|
|
||
|
Return the `.default` export of a module at the top-level.
|
||
|
|
||
|
### `alias`
|
||
|
|
||
|
- Type: Object
|
||
|
- Default: -
|
||
|
- Environment Variable: `JITI_ALIAS`
|
||
|
|
||
|
Custom alias map used to resolve ids.
|
||
|
|
||
|
### `nativeModules`
|
||
|
|
||
|
- Type: Array
|
||
|
- Default: ['typescript`]
|
||
|
- Environment Variable: `JITI_NATIVE_MODULES`
|
||
|
|
||
|
List of modules (within `node_modules`) to always use native require for them.
|
||
|
|
||
|
### `transformModules`
|
||
|
|
||
|
- Type: Array
|
||
|
- Default: []
|
||
|
- Environment Variable: `JITI_TRANSFORM_MODULES`
|
||
|
|
||
|
List of modules (within `node_modules`) to transform them regardless of syntax.
|
||
|
|
||
|
### `experimentalBun`
|
||
|
|
||
|
- Type: Boolean
|
||
|
- Default: Enabled if `process.versions.bun` exists (Bun runtime)
|
||
|
- Environment Variable: `JITI_EXPERIMENTAL_BUN`
|
||
|
|
||
|
Enable experimental native Bun support for transformations.
|
||
|
|
||
|
## Development
|
||
|
|
||
|
- Clone this repository
|
||
|
- Enable [Corepack](https://github.com/nodejs/corepack) using `corepack enable`
|
||
|
- Install dependencies using `pnpm install`
|
||
|
- Run `pnpm dev`
|
||
|
- Run `pnpm jiti ./test/path/to/file.ts`
|
||
|
|
||
|
## License
|
||
|
|
||
|
MIT. Made with 💖
|
||
|
|
||
|
<!-- Badged -->
|
||
|
|
||
|
[npm-version-src]: https://img.shields.io/npm/v/jiti?style=flat&colorA=18181B&colorB=F0DB4F
|
||
|
[npm-version-href]: https://npmjs.com/package/jiti
|
||
|
[npm-downloads-src]: https://img.shields.io/npm/dm/jiti?style=flat&colorA=18181B&colorB=F0DB4F
|
||
|
[npm-downloads-href]: https://npmjs.com/package/jiti
|
||
|
[bundle-src]: https://img.shields.io/bundlephobia/minzip/jiti?style=flat&colorA=18181B&colorB=F0DB4F
|
||
|
[bundle-href]: https://bundlephobia.com/result?p=h3
|
||
|
[license-src]: https://img.shields.io/github/license/unjs/jiti.svg?style=flat&colorA=18181B&colorB=F0DB4F
|
||
|
[license-href]: https://github.com/unjs/jiti/blob/main/LICENSE
|