JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 160430
  • Score
    100M100P100Q25162F
  • License MIT

Node.js loader for compiling ESM & TypeScript modules to CommonJS

Package Exports

  • @esbuild-kit/cjs-loader

Readme

cjs-loader

Node.js require() hook for loading ESM & TypeScript.

Features

  • Transforms ESM & TypeScript to CommonJS on demand
  • Supports TS extensions .cjs & .mjs (.cts & .mts)
  • Cached for performance boost
  • Supports Node.js v12.16.2+
  • Handles node: import prefixes
  • Resolves tsconfig.json paths

Protip: use with esm-loader or tsx

cjs-loader only transforms CommonJS modules (.cjs/.cts or .js files in commonjs type packages).

To hook into import() calls or ES modules (.mjs/.mts extensions or .js files in module type packages), use this with esm-loader.

Alternatively, use tsx to handle them both automatically.


Premium sponsor banner

Install

npm install --save-dev @esbuild-kit/cjs-loader

Usage

Pass @esbuild-kit/cjs-loader into the --require flag

node -r @esbuild-kit/cjs-loader ./file.js

TypeScript configuration

The following properties are used from tsconfig.json in the working directory:

  • strict: Whether to transform to strict mode
  • jsx: 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 JSX
  • jsxFragmentFactory: How to transform JSX Fragments
  • jsxImportSource: Where to import JSX functions from
  • allowJs: Whether to apply the tsconfig to JS files
  • paths: For resolving aliases

Custom tsconfig.json path

By 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 -r @esbuild-kit/cjs-loader ./file.js

Premium sponsor banner

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 -r @esbuild-kit/cjs-loader ./file.js

Sponsors

Premium sponsor banner Premium sponsor banner