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
esmfor 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
esmfor local runs:node -r esm main.js
💡 Omit the filename to enable
esmin 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/exportimport.meta- Dynamic
import - Improved errors
- Live bindings
- Loading
.mjsfiles as ESM - The file URI scheme
- Node
--evaland--printflags
Specify options with one of the following:
- The
"esm"field in yourpackage.json - JSON6 in an
.esmrcor.esmrc.jsonfile - JSON6 or file path in the
ESM_OPTIONSenvironment variable - CJS/ESM in an
.esmrc.jsor.esmrc.mjsfile
{ |
|||||||||||||||||
"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. |
} |
|