A fast, production ready, zero-dependency ES module loader for Node 6+!
See the release post ๐ and video ๐ฅ for all the details.
Run npx create-esm
or yarn create esm
.
๐ก Use the -y
flag to answer โyesโ to all prompts.
There are two ways to enable esm
.
-
Enable
esm
for packages:index.js
// Set options as a parameter, environment variable, or rc file. require = require("esm")(module/*, options*/) module.exports = require("./main.js").default
๐ก This is automagically done by
create-esm
. -
Enable
esm
for local runs:node -r esm main.js
๐ก Omit the filename to enable
esm
in the REPL.
The esm
loader bridges the ESM of today to the
ESM of tomorrow.
๐ By default, ๐ฏ percent CJS interoperability is enabled so you can get stuff done fast.
๐ .mjs
files are limited to basic functionality without support for esm
options.
Out of the box esm
just works, no configuration necessary, and supports:
import
/export
import.meta
- Dynamic
import
- Improved errors
- Live bindings
- Loading
.mjs
files as ESM - The file URI scheme
- Node
--eval
and--print
flags
Specify options with one of the following:
- The
"esm"
field in yourpackage.json
- JSON6 in an
.esmrc
or.esmrc.json
file - JSON6 or file path in the
ESM_OPTIONS
environment variable - CJS/ESM in an
.esmrc.js
or.esmrc.mjs
file
{ |
|||||||||||||||||
"mode": |
A string mode:
|
||||||||||||||||
"cjs": |
A boolean or object for toggling CJS features in ESM. Features
|
||||||||||||||||
"await": |
A boolean for top-level |
||||||||||||||||
} |
{ |
|
"cache": |
A boolean for toggling cache creation or string path of the cache directory. |
"debug": |
A boolean for unmasking stack traces. |
"sourceMap": |
A boolean for including inline source maps. |
"warnings": |
A boolean for logging development parse and runtime warnings. |
} |