@std/esm
This fast, small, zero dependency, package is all you need to enable
ES modules in Node 4+ today!
Getting started
-
Run npm i --save @std/esm
in your app or package directory.
-
Call require("@std/esm")
before importing ES modules.
index.js
require("@std/esm")
module.exports = require("./main.mjs").default
For package authors with sub modules:
require("foo")
const bar = require("foo/bar").default
Enable ESM in the Node CLI by loading @std/esm
with the -r
option:
node -r @std/esm file.mjs
Enable ESM in the Node REPL by loading @std/esm
upon entering:
$ node
> require("@std/esm")
@std/esm enabled
> import path from "path"
undefined
> path.join("hello", "world")
'hello/world'
Standard Features
Defaults are important. The @std/esm
loader strives to be as spec-compliant
as possible while following Node’s planned
built-in behaviors. This means, by default, ESM requires the use of the .mjs
extension.
Out of the box @std/esm
just works, no configuration necessary, and supports:
Note: You can unlock unambiguous .js
use with the "esm":"js"
option.
Unlockables
Developers have strong opinions on just about everything. To accommodate,
@std/esm
allows unlocking extra features with the "@std/esm"
or
"@std":{"esm":{}}
field in your package.json.
Note: All options are off by default.
{
"@std/esm": {
|
"await": | A boolean for top-level await in the main ES module |
"gz": |
A boolean for gzipped module support (i.e. .js.gz , .mjs.gz )
|
"esm": |
A string ESM mode
"mjs" files as ESM (default)"all" files as ESM"js" files with import /export /"use module" as ESM
|
"cjs": |
A boolean for CJS features in ESM
|
}
}
|