{"id":21225,"library":"esbuild-esm-loader","title":"esbuild-esm-loader","description":"ESM loader for Node.js that transforms imports using ESBuild, supporting TypeScript, JSX, and modern JavaScript. Current stable version is 0.3.3 (major version zero, so minor versions may include breaking changes). Requires Node.js >=16.17.0 and ESBuild as a peer dependency. It uses Node.js module customization hooks (--import) for transparent transformation without a build step. Alternative to ts-node, tsx, or jiti; focuses purely on ESBuild integration.","status":"active","version":"0.3.3","language":"javascript","source_language":"en","source_url":"https://github.com/aduth/esbuild-esm-loader","tags":["javascript","esm","loader","esm-loader"],"install":[{"cmd":"npm install esbuild-esm-loader","lang":"bash","label":"npm"},{"cmd":"yarn add esbuild-esm-loader","lang":"bash","label":"yarn"},{"cmd":"pnpm add esbuild-esm-loader","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"peer dependency required for transformation","package":"esbuild","optional":false}],"imports":[{"note":"Use --import (ESM) not -r (CJS) for Node >=16.17.0","wrong":"node -r esbuild-esm-loader/register ./entry.ts","symbol":"register","correct":"node --import=esbuild-esm-loader/register ./entry.ts"},{"note":"Package is ESM-only; CJS require will fail","wrong":"const EsmLoader = require('esbuild-esm-loader')","symbol":"EsmLoader (default export)","correct":"import EsmLoader from 'esbuild-esm-loader'"},{"note":"Named export for use in custom chain; available since v0.2.0","wrong":null,"symbol":"load hook","correct":"import { load } from 'esbuild-esm-loader'"}],"quickstart":{"code":"// file: index.tsx\nimport React from 'react';\nimport { renderToStaticMarkup } from 'react-dom/server';\n\nconsole.log(renderToStaticMarkup(<div>Hello World!</div>));\n// Run: node --import=esbuild-esm-loader/register --enable-source-maps index.tsx","lang":"typescript","description":"Shows how to use the loader via --import flag to transform TSX file on the fly with ESBuild."},"warnings":[{"fix":"Lock to patch version or pin with exact version.","message":"In v0.x minor versions always include breaking changes. Expect breaking changes on minor bumps.","severity":"breaking","affected_versions":"<1.0"},{"fix":"Use --import=esbuild-esm-loader/register instead of --experimental-loader.","message":"Node --experimental-loader is deprecated; use --import instead.","severity":"deprecated","affected_versions":">=0.2.0"},{"fix":"Use only one ESM loader at a time unless chaining is supported.","message":"Loader hooks are experimental in Node.js (still not stable as of Node 22). Integration with other loaders may break.","severity":"gotcha","affected_versions":">=0.1.0"},{"fix":"Run npm install esbuild alongside esbuild-esm-loader.","message":"ESBuild must be installed separately as a peer dependency. Missing esbuild causes runtime error.","severity":"gotcha","affected_versions":">=0.1.0"}],"env_vars":null,"last_verified":"2026-04-27T00:00:00.000Z","next_check":"2026-07-26T00:00:00.000Z","problems":[{"fix":"npm install esbuild","cause":"ESBuild peer dependency not installed.","error":"Cannot find module 'esbuild'"},{"fix":"Use import syntax or switch to dynamic import.","cause":"Trying to use require() on this ESM-only package.","error":"Error [ERR_REQUIRE_ESM]: require() of ES Module ... not supported"},{"fix":"Suppress with --no-warnings, but ignore as non-critical.","cause":"Node.js warning when using loader hooks (always shown until hooks are stable).","error":"ExperimentalWarning: Customization hooks is an experimental feature"}],"ecosystem":"npm","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}