Comparing version 2.0.0-beta.1 to 2.0.0-beta.2
{ | ||
"name": "jiti", | ||
"version": "2.0.0-beta.1", | ||
"version": "2.0.0-beta.2", | ||
"description": "Runtime typescript and ESM support for Node.js", | ||
"repository": "unjs/jiti", | ||
"license": "MIT", | ||
"type": "module", | ||
"exports": { | ||
".": { | ||
"types": "./dist/jiti.d.ts", | ||
"default": "./lib/index.js" | ||
} | ||
"import": { | ||
"types": "./lib/jiti.d.mts", | ||
"default": "./lib/jiti.mjs" | ||
}, | ||
"require": { | ||
"types": "./lib/jiti.d.cts", | ||
"default": "./lib/jiti.cjs" | ||
} | ||
}, | ||
"./register": { | ||
"import": "./lib/jiti-register.mjs" | ||
}, | ||
"./package.json": "./package.json" | ||
}, | ||
"main": "./lib/index.js", | ||
"types": "./dist/jiti.d.ts", | ||
"main": "./lib/jiti.cjs", | ||
"module": "./lib/jiti.mjs", | ||
"types": "./lib/jiti.d.mts", | ||
"bin": { | ||
"jiti": "bin/jiti.js" | ||
"jiti": "./lib/jiti-cli.mjs" | ||
}, | ||
@@ -21,3 +33,3 @@ "files": [ | ||
"dist", | ||
"register.js" | ||
"register.cjs" | ||
], | ||
@@ -28,8 +40,8 @@ "scripts": { | ||
"dev": "pnpm clean && pnpm webpack --watch", | ||
"jiti": "JITI_DEBUG=1 JITI_CACHE=false JITI_REQUIRE_CACHE=false ./bin/jiti.js", | ||
"jiti:legacy": "JITI_DEBUG=1 npx node@12 ./bin/jiti.js", | ||
"jiti": "JITI_DEBUG=1 ./lib/jiti-cli.mjs", | ||
"lint": "eslint . && prettier -c src lib test stubs", | ||
"lint:fix": "eslint --fix . && prettier -w src lib test stubs", | ||
"release": "pnpm build && pnpm test && changelogen --release --prerelease --push --publish --publishTag 2x", | ||
"test": "pnpm lint && vitest run --coverage && pnpm test:bun", | ||
"test": "pnpm lint && vitest run --coverage && pnpm test:register && pnpm test:bun", | ||
"test:register": "node ./test/register-test.mjs", | ||
"test:bun": "bun --bun test test/bun" | ||
@@ -53,5 +65,2 @@ }, | ||
"@types/node": "^20.14.9", | ||
"@types/object-hash": "^3.0.6", | ||
"@types/resolve": "^1.20.6", | ||
"@types/semver": "^7.5.8", | ||
"@vitest/coverage-v8": "^1.6.0", | ||
@@ -68,3 +77,2 @@ "acorn": "^8.12.0", | ||
"eslint-config-unjs": "^0.3.2", | ||
"esm": "^3.2.25", | ||
"estree-walker": "^3.0.3", | ||
@@ -74,21 +82,17 @@ "execa": "^9.3.0", | ||
"mlly": "^1.7.1", | ||
"object-hash": "^3.0.0", | ||
"pathe": "^1.1.2", | ||
"pirates": "^4.0.6", | ||
"pkg-types": "^1.1.1", | ||
"prettier": "^3.3.2", | ||
"reflect-metadata": "^0.2.1", | ||
"semver": "^7.6.2", | ||
"std-env": "^3.7.0", | ||
"terser-webpack-plugin": "^5.3.10", | ||
"ts-loader": "^9.5.1", | ||
"tslib": "^2.6.3", | ||
"typescript": "^5.5.2", | ||
"vite": "^5.3.1", | ||
"vitest": "^1.6.0", | ||
"webpack": "^5.92.1", | ||
"webpack-bundle-analyzer": "^4.10.2", | ||
"webpack-cli": "^5.1.4" | ||
"webpack-cli": "^5.1.4", | ||
"webpack-license-plugin": "^4.4.2" | ||
}, | ||
"packageManager": "pnpm@9.4.0" | ||
} |
141
README.md
# 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] | ||
<!-- automd:badges color=F0DB4F bundlephobia --> | ||
[![npm version](https://img.shields.io/npm/v/jiti?color=F0DB4F)](https://npmjs.com/package/jiti) | ||
[![npm downloads](https://img.shields.io/npm/dm/jiti?color=F0DB4F)](https://npmjs.com/package/jiti) | ||
[![bundle size](https://img.shields.io/bundlephobia/minzip/jiti?color=F0DB4F)](https://bundlephobia.com/package/jiti) | ||
<!-- /automd --> | ||
Just-in-Time Typescript and ESM support for Node.js. | ||
@@ -13,8 +16,9 @@ | ||
## Features | ||
## ✅ Features | ||
- Seamless typescript and ESM syntax support | ||
- Seamless Typescript and ESM syntax support | ||
- Seamless interoperability between ESM and CommonJS | ||
- Synchronous API to replace `require()` | ||
- Asynchronous API to replace `import()` | ||
- ESM Loader support | ||
- Super slim and zero dependency | ||
@@ -26,30 +30,57 @@ - Smart syntax detection to avoid extra transforms | ||
## Used by | ||
## 🌟 Used by | ||
- [Nitro](https://nitro.unjs.io/) and [UnJS](https://unjs.io/) ecosystem | ||
- [Docusaurus](https://docusaurus.io/) | ||
- [FormKit](https://formkit.com/) | ||
- [Histoire](https://histoire.dev/) | ||
- [Knip](https://knip.dev/) | ||
- [Nitro](https://nitro.unjs.io/) | ||
- [Nuxt](https://nuxt.com/) | ||
- [Docusaurus](https://docusaurus.io/) | ||
- [UnoCSS](https://unocss.dev/) | ||
- [Tailwindcss 3.x](https://tailwindcss.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/) | ||
- [FormKit](https://formkit.com/) | ||
- [Knip](https://knip.dev/) | ||
- [Histoire](https://histoire.dev/) | ||
- [...55M+ npm monthly downloads](https://www.npmjs.com/package/jiti) | ||
- [...5M+ public repositories](https://github.com/unjs/jiti/network/dependents) | ||
- [ add yours ] | ||
- [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/) | ||
- [...UnJS ecosystem](https://unjs.io/) | ||
- [...58M+ npm monthly downloads](https://www.npmjs.com/package/jiti) | ||
- [...5.5M+ public repositories](https://github.com/unjs/jiti/network/dependents) | ||
- [ pr welcome add yours ] | ||
## Usage | ||
## 💡 Usage | ||
### CLI | ||
You can use `jiti` CLI to quickly run any script with Typescript and native ESM support! | ||
```bash | ||
npx jiti ./index.ts | ||
# or | ||
jiti ./index.ts | ||
``` | ||
### Programmatic | ||
```js | ||
const jiti = require("jiti")(__filename); | ||
// ESM | ||
import { createJiti } from "jiti"; | ||
const jiti = createJiti(import.meta.url); | ||
// CommonJS mode | ||
jiti("./path/to/file.ts"); | ||
// CommonJS | ||
const { createJiti } = require("jiti"); | ||
const jiti = createJiti(__filename); | ||
// ESM mode | ||
// jiti.import() acts like import() with Typescript support | ||
await jiti.import("./path/to/file.ts"); | ||
// jiti() acts like require() with Typescript and (non async) ESM support | ||
jiti("./path/to/file.ts"); | ||
``` | ||
@@ -60,26 +91,22 @@ | ||
```js | ||
const jiti = require("jiti")(__filename, { debug: true }); | ||
const jiti = createJiti(import.meta.url, { debug: true }); | ||
``` | ||
### CLI | ||
### Register global ESM loader | ||
```bash | ||
jiti index.ts | ||
# or npx jiti index.ts | ||
``` | ||
You can globally register jiti using [global hooks](https://nodejs.org/api/module.html#initialize). | ||
### Register require hook | ||
**Note:** This is an experimental approach and only tested to work on Node.js > 20. I don't recommend it and unless you have to, please prefer explicit method. | ||
```bash | ||
node -r jiti/register index.ts | ||
```js | ||
import "jiti/register"; | ||
``` | ||
Alternatively, you can register `jiti` as a require hook programmatically: | ||
Or: | ||
```js | ||
const jiti = require("jiti")(); | ||
const unregister = jiti.register(); | ||
```bash | ||
node --import jiti/register index.ts | ||
``` | ||
## Options | ||
## ⚙️ Options | ||
@@ -94,12 +121,26 @@ ### `debug` | ||
### `cache` | ||
### `fsCache` | ||
- Type: Boolean | String | ||
- Default: `true` | ||
- Environment Variable: `JITI_CACHE` | ||
- Environment Variable: `JITI_FS_CACHE` | ||
Use transpile cache | ||
Filesystem source cache (enabled by default) | ||
If set to `true` will use `node_modules/.cache/jiti` (if exists) or `{TMP_DIR}/node-jiti` | ||
By default (when is `true`), jiti uses `node_modules/.cache/jiti` (if exists) or `{TMP_DIR}/node-jiti`. | ||
**Note:** It is recommended to keep this option 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 same module multiple times. | ||
When enabled, jiti integrates with Node.js native CommonJS cache store. | ||
### `transform` | ||
@@ -169,13 +210,13 @@ | ||
MIT. Made with 💖 | ||
<!-- automd:contributors license=MIT author="pi0" --> | ||
<!-- Badged --> | ||
Published under the [MIT](https://github.com/unjs/jiti/blob/main/LICENSE) license. | ||
Made by [@pi0](https://github.com/pi0) and [community](https://github.com/unjs/jiti/graphs/contributors) 💛 | ||
<br><br> | ||
<a href="https://github.com/unjs/jiti/graphs/contributors"> | ||
<img src="https://contrib.rocks/image?repo=unjs/jiti" /> | ||
</a> | ||
[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=jiti | ||
[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 | ||
<!-- /automd --> | ||
<!-- automd:with-automd --> |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
Environment variable access
Supply chain riskPackage accesses environment variables, which may be a sign of credential stuffing or data theft.
Found 2 instances in 1 package
Minified code
QualityThis package contains minified code. This may be harmless in some cases where minified code is included in packaged libraries, however packages on npm should not minify code.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Minified code
QualityThis package contains minified code. This may be harmless in some cases where minified code is included in packaged libraries, however packages on npm should not minify code.
Found 1 instance in 1 package
43
6923
218
Yes
1895302
13
23
1