module-deps icon indicating copy to clipboard operation
module-deps copied to clipboard

[WIP] ES modules

Open goto-bus-stop opened this issue 7 years ago • 1 comments

Adds node-style experimental ES modules support. pass esm: true to interpret .mjs files as ES modules.

ES modules get a rec.esm property so that later parts in the browserify pipeline can identify them. rec.esm is an object containing properties:

  • rec.esm.imports - array of imported bindings
  • rec.esm.exports - array of exported bindings

Imported bindings are objects of the form:

  • binding.from - source module (value "a" in import "a")
  • binding.import - imported binding
  • binding.as - local name for the binding (often the same as binding.import)
  • binding.esm - true if the source module is also an ES module, false if it is a commonjs module.

Exported bindings are objects of the form:

  • binding.export - local name of the binding (can be undefined if export default-ing an unnamed expression)
  • binding.as - public name of the binding

Transforms can check opts._flags.esm to see if the module being transformed is an ES module (true) or a CommonJS module (false). It might be useful if transforms could also set opts._flags.esm to mark their output as an ES module, for languages that compile to ES modules.

goto-bus-stop avatar Dec 26 '17 13:12 goto-bus-stop

@goto-bus-stop any plans to continue on this PR ?

arlac77 avatar Apr 15 '20 16:04 arlac77