@std/esm
This fast, small, zero dependency, package is all you need to enable ES modules in Node 4+ today!
π See the release post for all the details.
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:
// Have "foo" require only "@std/esm".
require("foo")
// Sub modules work!
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
The @std/esm
loader is as spec-compliant
as possible and follows Nodeβs rules.
π This means, by default, ESM requires the use of the .mjs
extension.
π You can unlock unambiguous .js
use with the "esm":"js"
option.
Out of the box @std/esm
just works, no configuration necessary, and supports:
import
/export
- Dynamic
import()
- Live bindings
- Loading
.mjs
files as ESM - The file URI scheme
- Node 4+ support
Unlockables
Unlock extra features with "@std/esm":options
or
"@std":{"esm":options}
in your package.json.
Note: Options are off by default and may be specified as either an object or ESM mode string.
|
|
"await": |
A boolean for top-level |
"gz": |
A boolean for gzipped module support (i.e.
|
"esm": |
A string ESM mode
|
"cjs": |
A boolean for CJS features in ESM
|
|