A fast, production ready, zero-dependency ES module loader for Node 6+!
See the release post ๐ and video ๐ฅ for all the details.
-
New projects
Run
npm init esm
oryarn create esm
.๐ก Use the
-y
flag to answer โyesโ to all prompts. -
Existing projects
Run
npm i esm
oryarn add esm
.
There are two ways to enable esm
.
-
Enable
esm
for packages:Use
esm
to load the main ES module and export it as CommonJS.index.js
// Set options as a parameter, environment variable, or rc file. require = require("esm")(module/*, options*/) module.exports = require("./main.js")
main.js
// ESM syntax is supported. export {}
๐ก These files are automagically created with
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 - Node
--check
flag (Node 10+)
Specify options with one of the following:
- The
"esm"
field inpackage.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
{ |
|||||||||||||||||||
"await": |
A boolean for top-level |
||||||||||||||||||
"cjs": |
A boolean or object for toggling CJS features in ESM. Features
|
||||||||||||||||||
"mainFields": |
An array of fields, e.g. |
||||||||||||||||||
"mode": |
A string mode:
|
||||||||||||||||||
} |
{ |
|
"cache": |
A boolean for toggling cache creation or string path of the cache directory. |
"debug": |
A boolean for unmasking methods and stack traces. |
"sourceMap": |
A boolean for including inline source maps. |
"warnings": |
A boolean for logging development parse and runtime warnings. |
} |
- Load
esm
with the โrequireโ option of
ava
,mocha
,nodemon
,nyc
,qunit
,tape
,ts-node
, orwebpack
- Load
esm
before@babel/register
,newrelic
, orsqreen
- Load
esm
with the--node-arg=-r --node-arg=esm
option ofnode-tap
- Load
esm
with the--node-args="-r esm"
option ofpm2
- Load
esm
withwallaby.js
- Use
esm
to loadjasmine