Skip to content
Node.js Foundation Modules Team
Branch: master
Clone or download
robpalme Merge pull request #439 from nodejs/minutes-2019-11-20
Minutes for 2019-11-20 meeting
Latest commit 84131c2 Nov 22, 2019

README.md

Modules Team

Purpose

The Node.js Modules Team maintains and actively develops the ECMAScript Modules (ESM) implementation in Node.js Core.

Work includes:

  • ESM Loader implementation
  • ESM Module Specifier Resolution Algorithm
  • Loader Hooks
  • ESM and CommonJS Interoperability
  • Node.js and Browser interoperability
  • VM Modules implementation

Current Efforts

Current Plan for ECMAScript Modules support in Node.js

A new ECMAScript modules implementation shipped behind the --experimental-modules flag in Node.js 12.0.0. The flag was dropped in Node.js 13.2.0, although the implementation remains experimental and is still subject to change. A road map of the implementation’s development is here.

Features

Based on these use cases (#55), our implementation aims to support the following features (subject to change):

Baseline Modules Implementation Features:

  • Spec compliance (#132)
  • Browser equivalence (#133)
  • Don’t break CommonJS (#112)
  • No refactoring (#87)

Browser Interop:

  • Browser and Node compatibility without building (#107)
  • Browser-compatible specifier resolution (#109)
  • Browser-compatible builds for ESM and CommonJS (#108)

CommonJS Interop:

  • Named exports when importing CJS (#81)
  • Multi-mode packages (#94)
  • Transparent interoperability for ESM importing CommonJS (#100)
  • Consumer-agnostic imports (#105)
  • Mixed module types within app/module; gradual migration from CommonJS to ESM (#99)
  • ESM in .js files (#151)

Existing Node.js Utility Features:

  • Importing non-JavaScript files (#115)
  • NodeJS contextual pathing use cases (#121)
  • ESM in executable files (#152)
  • Callable resolver (#157)

Loader Features:

  • Code coverage/instrumentation (#95)
  • Pluggable Loaders to support multiple use cases (#82)
  • Runtime loaders, transpilation at import time (#96)
  • Arbitrary sources for module source text (#97)
  • Mock modules (injection) (#98)
  • Specifier resolution customization (#110)
  • Package encapsulation (#111)
  • Conditional imports (#113)

WASM Features:

  • WASM modules (#106)

Developer and Tooling Features:

  • File / path / URL resolving (#103)
  • Import CommonJS without needing asynchronous syntax (#116)
  • Tree shaking (#102)
  • Polyfillability (#101)

Members

Observers

You can’t perform that action at this time.