esm_prateek
v1.1.0
Published
Tomorrow's ECMAScript modules today!
Downloads
2
Maintainers
Readme
esm
A fast, production ready, zero-dependency ES module loader for Node 6+!
See the release post and video for all the details.
Install
New projects
Run
npm init esm
oryarn create esm
.:bulb: Use the
-y
flag to answer “yes” to all prompts.Existing projects
Run
npm i esm
oryarn add esm
.
Getting started
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 {}
:bulb: These files are automagically created with
npm init esm
oryarn create esm
.Enable
esm
for local runs:node -r esm main.js
:bulb: Omit the filename to enable
esm
in the REPL.
Features
The esm
loader bridges the ESM of today to the
ESM of tomorrow.
:clap: By default, :100: percent CJS interoperability is enabled so you can get stuff done fast.
:lock: .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+)
Options
Specify options with one of the following:
- The
"esm"
field inpackage.json
- CJS/ESM in an
.esmrc.js
or.esmrc.mjs
file - JSON6 in an
.esmrc
or.esmrc.json
file - JSON6 or file path in the
ESM_OPTIONS
environment variable - The
ESM_DISABLE_CACHE
environment variable
DevOpts
Tips
Bundling
Add a “module” field to
package.json
with the path to the main ES module.:bulb: This is automagically done with
npm init esm
oryarn create esm
.Use
esmify
withbrowserify
.
Extensions
- Enable ESM syntax for
wallaby.js
following their integration example.
Loading
The
jasmine
test runner does not have a mechanism to loadesm
. However,esm
can load a bootstrap file that programmaticly runs tests following their library usage example.Load
esm
before loaders/monitors like@babel/register
,newrelic
,sqreen
, andts-node
.Load
esm
with the “node-args” options ofLoad
esm
with “require” options ofava
,mocha
,nodemon
,nyc
,qunit
,tape
, andwebpack
.:bulb: By Node’s rules, builtin
require
cannot sideload.mjs
files. However, withesm
, ES modules can be sideloaded as.js
files or.mjs
files may be loaded with dynamicimport
.