Skip to content

CacheControl/esm

 
 

Repository files navigation

esm

A fast, production ready, zero-dependency ES module loader for Node 6+!

See the release post 📖 and video 🎥 for all the details.

Install

Run npx create-esm or yarn create esm.

💡 Use the -y flag to answer “yes” to all prompts.

Getting started

There are two ways to enable esm.

  1. Enable esm for packages:

    index.js

    // Set options as a parameter, environment variable, or rc file.
    require = require("esm")(module/*, options*/)
    module.exports = require("./main.js").default

    💡 This is automagically done by create-esm.

  2. Enable esm for local runs:

    node -r esm main.js

    💡 Omit the filename to enable esm in the REPL.

Features

The esm loader bridges the ESM of today to the ESM of tomorrow.

👏 By default, 💯 percent CJS interoperability is enabled so you can get stuff done fast.
🔒 .mjs files are limited to basic functionality without support for esm options.

Out of the box esm just works, no configuration necessary, and supports:

Options

Specify options with one of the following:

  • The "esm" field in your package.json
  • JSON6 in an .esmrc or .esmrc.json file
  • JSON6 or file path in the ESM_OPTIONS environment variable
  • CJS/ESM in an .esmrc.js or .esmrc.mjs file
{
"mode":

A string mode:

  • "auto" detect files with import, import.meta, export,
    "use module", or .mjs as ESM
  • "all" script files are treated as ESM
  • "strict" to treat only .mjs files as ESM
"cjs":

A boolean or object for toggling CJS features in ESM.

Features
{
"cache":

A boolean for storing ES modules in require.cache.

"extensions":

A boolean for respecting require.extensions in ESM.

"interop":

A boolean for __esModule interoperability.

"namedExports":

A boolean for importing named exports of CJS modules.

"paths":

A boolean for following CJS path rules in ESM.

"vars":

A boolean for __dirname, __filename, and require in ESM.

}
"await":

A boolean for top-level await in modules without ESM exports.

}

DevOpts

{
"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.

}

Tips

About

Tomorrow's ESM today!

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • JavaScript 100.0%