esm

非常简单、无 babel、无绑定的 ECMAScript 模块加载器。「The brilliantly simple, babel-less, bundle-less ECMAScript module loader.」

Github星跟踪图

esm

The brilliantly simple, babel-less, bundle-less ECMAScript module loader.

esm is 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 esm or yarn create esm.

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

  • Existing projects

    Run npm i esm or yarn add esm.

Getting started

There are two ways to enable esm.

  1. Enable esm for packages:

    Use esm to 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 esm or yarn create esm.

  2. Enable esm for local runs:

    node -r esm main.js
    

    :bulb: Omit the filename to enable esm in 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:

Options

Specify options with one of the following:

  • "esm" field in package.json
  • CJS/ESM in an .esmrc.js, .esmrc.cjs, or .esmrc.mjs file
  • JSON6 in an .esmrc or .esmrc.json file
  • JSON6 or file path in the ESM_OPTIONS environment variable
  • ESM_DISABLE_CACHE environment variable

DevOpts

Tips

Bundling

  • For bundlers like browserify+esmify,
    parcel-bundler, and webpack
    add a "module" field to package.json pointing to the main ES module.

    "main": "index.js",
    "module": "main.js"
    

    :bulb: This is automagically done with npm init esm or yarn create esm.

Extensions

Loading

  • Load esm before loaders/monitors like
    @babel/register,
    newrelic,
    sqreen, and
    ts-node.

  • Load esm for jasmine using the
    "helpers"
    field in jasmine.json:

    "helpers": [
      "node_modules/esm"
    ]
    
  • Load esm with “node-args" options of:

    • pm2: --node-args="-r esm"
  • Load esm with “require” options of
    ava,
    mocha,
    nodemon,
    nyc,
    qunit,
    tape, and
    webpack.

    :bulb: Builtin require cannot sideload .mjs files. However, .js files
    can be sideloaded or .mjs files may be loaded with dynamic import.

主要指标

概览
名称与所有者standard-things/esm
主编程语言JavaScript
编程语言JavaScript (语言数: 4)
平台Linux, Mac, Windows
许可证Other
所有者活动
创建于2017-05-25 16:46:17
推送于2024-04-10 19:03:12
最后一次提交2024-04-11 02:03:12
发布数189
最新版本名称3.2.25 (发布于 2019-05-16 22:16:23)
第一版名称0.0.1 (发布于 2017-08-09 22:23:09)
用户参与
星数5.3k
关注者数55
派生数148
提交数6.4k
已启用问题?
问题数648
打开的问题数83
拉请求数53
打开的拉请求数3
关闭的拉请求数76
项目设置
已启用Wiki?
已存档?
是复刻?
已锁定?
是镜像?
是私有?