diff --git a/doc/api/esm.md b/doc/api/esm.md index 108fd76336495d..7b684e99a27fc2 100644 --- a/doc/api/esm.md +++ b/doc/api/esm.md @@ -6,17 +6,21 @@ -Node contains support for ES Modules based upon the [the Node EP for ES Modules][]. +Node.js contains support for ES Modules based upon the +[Node.js EP for ES Modules][]. -Not all features of the EP are complete and will be landing as both VM support and implementation is ready. Error messages are still being polished. +Not all features of the EP are complete and will be landing as both VM support +and implementation is ready. Error messages are still being polished. ## Enabling -The `--experimental-modules` flag can be used to enable features for loading ESM modules. +The `--experimental-modules` flag can be used to enable features for loading +ESM modules. -Once this has been set, files ending with `.mjs` will be able to be loaded as ES Modules. +Once this has been set, files ending with `.mjs` will be able to be loaded +as ES Modules. ```sh node --experimental-modules my-app.mjs @@ -28,7 +32,9 @@ node --experimental-modules my-app.mjs ### Supported -Only the CLI argument for the main entry point to the program can be an entry point into an ESM graph. In the future `import()` can be used to create entry points into ESM graphs at run time. +Only the CLI argument for the main entry point to the program can be an entry +point into an ESM graph. In the future `import()` can be used to create entry +points into ESM graphs at run time. ### Unsupported @@ -43,11 +49,13 @@ Only the CLI argument for the main entry point to the program can be an entry po ### No NODE_PATH -`NODE_PATH` is not part of resolving `import` specifiers. Please use symlinks if this behavior is desired. +`NODE_PATH` is not part of resolving `import` specifiers. Please use symlinks +if this behavior is desired. ### No `require.extensions` -`require.extensions` is not used by `import`. The expectation is that loader hooks can provide this workflow in the future. +`require.extensions` is not used by `import`. The expectation is that loader +hooks can provide this workflow in the future. ### No `require.cache` @@ -55,9 +63,12 @@ Only the CLI argument for the main entry point to the program can be an entry po ### URL based paths -ESM are resolved and cached based upon [URL](url.spec.whatwg.org) semantics. This means that files containing special characters such as `#` and `?` need to be escaped. +ESM are resolved and cached based upon [URL](https://url.spec.whatwg.org/) +semantics. This means that files containing special characters such as `#` and +`?` need to be escaped. -Modules will be loaded multiple times if the `import` specifier used to resolve them have a different query or fragment. +Modules will be loaded multiple times if the `import` specifier used to resolve +them have a different query or fragment. ```js import './foo?query=1'; // loads ./foo with query of "?query=1" @@ -70,9 +81,11 @@ For now, only modules using the `file:` protocol can be loaded. All CommonJS, JSON, and C++ modules can be used with `import`. -Modules loaded this way will only be loaded once, even if their query or fragment string differs between `import` statements. +Modules loaded this way will only be loaded once, even if their query +or fragment string differs between `import` statements. -When loaded via `import` these modules will provide a single `default` export representing the value of `module.exports` at the time they finished evaluating. +When loaded via `import` these modules will provide a single `default` export +representing the value of `module.exports` at the time they finished evaluating. ```js import fs from 'fs'; @@ -85,4 +98,4 @@ fs.readFile('./foo.txt', (err, body) => { }); ``` -[the Node EP for ES Modules]: https://github.com/nodejs/node-eps/blob/master/002-es-modules.md +[Node.js EP for ES Modules]: https://github.com/nodejs/node-eps/blob/master/002-es-modules.md