You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

153 lines
3.2 KiB

1 year ago
# jiti
> Runtime typescript and ESM support for Node.js
[![version][npm-v-src]][npm-v-href]
[![downloads][npm-d-src]][npm-d-href]
[![size][size-src]][size-href]
## 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.
## 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 💖
<!-- Refs -->
[npm-v-src]: https://img.shields.io/npm/v/jiti?style=flat-square
[npm-v-href]: https://npmjs.com/package/jiti
[npm-d-src]: https://img.shields.io/npm/dm/jiti?style=flat-square
[npm-d-href]: https://npmjs.com/package/jiti
[github-actions-src]: https://img.shields.io/github/workflow/status/unjs/jiti/ci/master?style=flat-square
[github-actions-href]: https://github.com/unjs/jiti/actions?query=workflow%3Aci
[size-src]: https://packagephobia.now.sh/badge?p=jiti
[size-href]: https://packagephobia.now.sh/result?p=jiti