Socket
Socket
Sign inDemoInstall

@esbuild-kit/cjs-loader

Package Overview
Dependencies
2
Maintainers
1
Versions
17
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

@esbuild-kit/cjs-loader


Version published
Maintainers
1
Install size
10.1 MB
Created

Package description

What is @esbuild-kit/cjs-loader?

@esbuild-kit/cjs-loader is an npm package that allows you to use ES modules (ESM) in CommonJS (CJS) environments. It leverages esbuild to transpile ESM to CJS on the fly, enabling seamless integration of modern JavaScript modules in older Node.js projects.

What are @esbuild-kit/cjs-loader's main functionalities?

Transpile ESM to CJS

This feature allows you to transpile ES modules to CommonJS on the fly. By registering the loader, you can require ESM files in a CJS environment.

const { register } = require('@esbuild-kit/cjs-loader');
register();
const esmModule = require('./esmModule.mjs');
console.log(esmModule);

Custom Loader Options

You can customize the loader options such as the target ECMAScript version and the output format. This provides flexibility in how the ESM is transpiled to CJS.

const { register } = require('@esbuild-kit/cjs-loader');
register({ target: 'es2017', format: 'cjs' });
const esmModule = require('./esmModule.mjs');
console.log(esmModule);

Other packages similar to @esbuild-kit/cjs-loader

Readme

Source

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

Keywords

FAQs

Last updated on 14 Sep 2023

Did you know?

Socket

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.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Packages

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc