
Security News
How Enterprise Security Is Adapting to AI-Accelerated Threats
Socket CTO Ahmad Nassri discusses why supply chain attacks now target developer machines and what AI means for the future of enterprise security.
@esbuild-kit/esm-loader
Advanced tools
Node.js loader for loading TypeScript files.
node: import prefixestsconfig.json pathsProtip: use with cjs-loader or tsx
esm-loader only transforms ES modules (
.mjs/.mtsextensions or.jsfiles inmoduletype packages).To transform CommonJS files (
.cjs/.ctsextensions or.jsfiles incommonjstype packages), use this with cjs-loader.Alternatively, use tsx to handle them both automatically.
npm install --save-dev @esbuild-kit/esm-loader
Pass @esbuild-kit/esm-loader into the --loader flag.
node --loader @esbuild-kit/esm-loader ./file.ts
The following properties are used from tsconfig.json in the working directory:
strict: Whether to transform to strict modejsx: Whether to transform JSX
Warning: When set to
preserve, the JSX syntax will remain untransformed. To prevent Node.js from throwing a syntax error, chain another Node.js loader that can transform JSX to JS.
jsxFactory: How to transform JSXjsxFragmentFactory: How to transform JSX FragmentsjsxImportSource: Where to import JSX functions fromallowJs: Whether to apply the tsconfig to JS filespaths: For resolving aliasestsconfig.json pathBy default, tsconfig.json will be detected from the current working directory.
To set a custom path, use the ESBK_TSCONFIG_PATH environment variable:
ESBK_TSCONFIG_PATH=./path/to/tsconfig.custom.json node --loader @esbuild-kit/esm-loader ./file.ts
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.ts
Yes. This loader transpiles JSON modules so it's also compatible with named imports.
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.ts
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.js
ESM import resolution expects explicit import paths, whereas CommonJS resolution expects implicit imports (eg. extensionless & directory imports).
As a result of this change, Node.js changes how it imports a path that matches both a file and directory. In ESM, the directory would be imported, but in CJS, the file would be imported.
To use to the CommonJS resolution algorithm, use the --experimental-specifier-resolution=node flag.
node --loader @esbuild-kit/esm-loader --experimental-specifier-resolution=node ./file.ts
tsx - Node.js runtime powered by esbuild using @esbuild-kit/cjs-loader and @esbuild-kit/esm-loader.
@esbuild-kit/cjs-loader - TypeScript & ESM to CJS transpiler using the Node.js loader API.
ts-node is a TypeScript execution engine and REPL for Node.js. It allows you to run TypeScript code directly without precompiling. Compared to @esbuild-kit/esm-loader, ts-node focuses more on TypeScript execution and less on ESM support.
babel-register is a package that hooks into Node.js require to compile files on the fly using Babel. It supports a wide range of JavaScript syntax and features. While it provides similar functionality to @esbuild-kit/esm-loader, it relies on Babel instead of esbuild for transpilation.
esm is a package that enables ES module support in Node.js. It allows you to use ESM syntax in Node.js versions that do not natively support it. Compared to @esbuild-kit/esm-loader, esm is more focused on providing ESM support without additional transpilation features.
FAQs
Node.js loader for compiling TypeScript modules to ESM
The npm package @esbuild-kit/esm-loader receives a total of 1,695,442 weekly downloads. As such, @esbuild-kit/esm-loader popularity was classified as popular.
We found that @esbuild-kit/esm-loader demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
Socket CTO Ahmad Nassri discusses why supply chain attacks now target developer machines and what AI means for the future of enterprise security.

Security News
Learn the essential steps every developer should take to stay secure on npm and reduce exposure to supply chain attacks.

Security News
Experts push back on new claims about AI-driven ransomware, warning that hype and sponsored research are distorting how the threat is understood.