esm
The brilliantly simple, babel-less, bundle-less ECMAScript module loader.
esmis the world’s most advanced ECMAScript module loader.
This fast, production ready, zero dependency loader is all you need to support
ECMAScript modules in Node 6+. See the release post
and video for details!
Install
- 
New projects Run npm init esmoryarn create esm.:bulb: Use the -yflag to answer “yes” to all prompts.
- 
Existing projects Run npm i esmoryarn add esm.
Getting started
There are two ways to enable esm.
- 
Enable esmfor packages:Use esmto 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 esmoryarn create esm.
- 
Enable esmfor local runs:node -r esm main.js:bulb: Omit the filename to enable esmin the REPL.
Features
:clap: By default, :100: percent CJS interoperability is enabled so you can get stuff done.
: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:
- Passing all applicable test262 compliance tests
- import/- export
- import.meta
- Dynamic import
- Live bindings
- File URI scheme
- Node stdin,--eval,--printflags
- Node --checkflag (Node 10+)
Options
Specify options with one of the following:
- "esm"field in- package.json
- CJS/ESM in an .esmrc.js,.esmrc.cjs, or.esmrc.mjsfile
- JSON6 in an .esmrcor.esmrc.jsonfile
- JSON6 or file path in the ESM_OPTIONSenvironment variable
- ESM_DISABLE_CACHEenvironment variable
DevOpts
Tips
Bundling
- 
For bundlers like browserify+esmify,
 parcel-bundler, andwebpack
 add a"module"field topackage.jsonpointing to the main ES module."main": "index.js", "module": "main.js":bulb: This is automagically done with npm init esmoryarn create esm.
Extensions
- Enable esmforwallaby.jsfollowing their
 integration example.
Loading
- 
Load esmbefore loaders/monitors like
 @babel/register,
 newrelic,
 sqreen, and
 ts-node.
- 
Load esmforjasmineusing the
 "helpers"
 field injasmine.json:"helpers": [ "node_modules/esm" ]
- 
Load esmwith “node-args" options of:- pm2:- --node-args="-r esm"
 
- 
Load esmwith “require” options of
 ava,
 mocha,
 nodemon,
 nyc,
 qunit,
 tape, and
 webpack.:bulb: Builtin requirecannot sideload.mjsfiles. However,.jsfiles
 can be sideloaded or.mjsfiles may be loaded with dynamicimport.
 該所有者的項目
                                                                (
                                                                該所有者的項目
                                                                (