$ cnpm install @std/esm
This fast, small, zero-dependency package is all you need to enable ES modules in Node 6+ today!
See the release post :book: and video :movie_camera: for all the details.
This package has been discontinued in favor of esm.
Run npm i --save @std/esm in your app or package directory.
There are three ways to enable ESM with @std/esm.
Enable ESM with a CJS bridge:
index.js
// Provide options as a parameter, environment variable, or rc file.
require = require("@std/esm")(module/*, options*/)
module.exports = require("./main.mjs").default
Enable ESM in the Node CLI with the -r option:
node -r @std/esm main.mjs
Enable ESM in the Node REPL:
node -r @std/esm
or upon entering:
$ node
> require("@std/esm")
@std/esm enabled
Note: All "cjs" options are unlocked in the Node REPL.
The @std/esm loader is as spec-compliant
as possible and follows Node’s ESM rules.
:point_right: This means, by default, ESM requires the use of the .mjs file
extension.
:unlock: You can unlock ESM with the .js file extension using
the "js" ESM mode.
Out of the box @std/esm just works, no configuration necessary, and supports:
import / exportimport.metaimport.mjs files as ESM--eval and --print flagsUnlock features with options specified as one of the following:
"@std/esm" field in your package.jsonESM_OPTIONS environment variableCommonly used options may be specified in shorthand form:
"@std/esm":"js" is shorthand for "@std/esm":{"mode":"js"}"@std/esm":"cjs" is shorthand for "@std/esm":{"cjs":true,"mode":"js"}{ | |||||||||||||||||||
"mode": | A string mode:
| ||||||||||||||||||
"cjs": | A boolean or object to unlock CJS features in ESM. A boolean for storing ES modules in A boolean for respecting A boolean for A boolean for importing named exports of CJS modules. A boolean for following CJS path rules in ESM. A boolean for top-level A boolean for | ||||||||||||||||||
"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. |
} | |
@std/esm before
@babel/register v7+@std/esm with the “require” option of
ava,
mocha,
nyc, and
tape@std/esm with the --node-arg=-r --node-arg=@std/esm option of
node-tap@std/esm with the --node-args="-r @std/esm" option of
pm2@std/esm with wallaby.js@std/esm to load jasmine"@std/esm":"cjs" for the --watch and --watch-extensions options of
mocha"@std/esm":"cjs" for ava and webpack"@std/esm":"cjs"Copyright 2013 - present © cnpmjs.org | Home |