esm-loader-test v0.0.0-semantic-release
esm-loader
Node.js import hook to instantaneously transform TypeScript to ESM on demand using esbuild.
Features
- Transforms TypeScript to ESM on demand
- Classic Node.js resolution (extensionless & directory imports)
- Cached for performance boost
- Supports Node.js v12.20.0+
- Handles
node:import prefixes
Tip:
esm-loader doesn't hook into
require()calls or transform CommonJS files (.jsin commonjs package,.cjs,.cts).Use this with cjs-loader for CommonJS support. Alternatively, use tsx to handle them both automatically.
Install
npm install --save-dev @esbuild-kit/esm-loaderUsage
Pass @esbuild-kit/esm-loader into the --loader flag.
node --loader @esbuild-kit/esm-loader ./file.tsTypeScript configuration
The following properties are used from tsconfig.json in the working directory:
jsxFactoryjsxFragmentFactory
Cache
Modules transformations are cached in the system cache directory (TMPDIR). Transforms are cached by content hash so duplicate dependencies are not re-transformed.
Set environment variable ESBK_DISABLE_CACHE to a truthy value to disable the cache:
ESBK_DISABLE_CACHE=1 node --loader @esbuild-kit/esm-loader ./file.tsFAQ
Can it import JSON modules?
Yes. This loader transpiles JSON modules so it's also compatible with named imports.
Can it import ESM modules over network?
Node.js has built-in support for network imports behind the --experimental-network-imports flag.
You can pass it in with esm-loader:
node --loader @esbuild-kit/esm-loader --experimental-network-imports ./file.tsCan it resolve files without an extension?
In ESM, import paths must be explicit (must include file name and extension).
For backwards compatibility, this loader adds support for classic Node resolution for extensions: .js, .json, .ts, .tsx, .jsx. Resolving a index file by the directory name works too.
import file from './file' // -> ./file.js
import directory from './directory' // -> ./directory/index.jsRelated
tsx - Node.js runtime powered by esbuild using
@esbuild-kit/cjs-loaderand@esbuild-kit/esm-loader.@esbuild-kit/cjs-loader - TypeScript & ESM to CJS transpiler using the Node.js loader API.
3 years ago