src: rename --loader to --experimental-loader
Renames the `--loader` cli argument to `--experimental-loader`. This is to clearly indicate the esm loader feature as experimental even after esm is no longer experimental. Also minorly alters the `--experimental-loader` docs to say that the passed loader can be an esm module. Refs: https://github.com/nodejs/modules/issues/351#issuecomment-535189524 PR-URL: https://github.com/nodejs/node/pull/29752 Reviewed-By: Guy Bedford <guybedford@gmail.com> Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: Luigi Pinca <luigipinca@gmail.com> Reviewed-By: David Carlier <devnexen@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
This commit is contained in:
parent
1c5a3f0d09
commit
15fb02a515
@ -368,12 +368,13 @@ Specify ways of the inspector web socket url exposure.
|
|||||||
By default inspector websocket url is available in stderr and under `/json/list`
|
By default inspector websocket url is available in stderr and under `/json/list`
|
||||||
endpoint on `http://host:port/json/list`.
|
endpoint on `http://host:port/json/list`.
|
||||||
|
|
||||||
### `--loader=file`
|
### `--experimental-loader=module`
|
||||||
<!-- YAML
|
<!-- YAML
|
||||||
added: v9.0.0
|
added: v9.0.0
|
||||||
-->
|
-->
|
||||||
|
|
||||||
Specify the `file` of the custom [experimental ECMAScript Module][] loader.
|
Specify the `module` of a custom [experimental ECMAScript Module][] loader.
|
||||||
|
`module` may be either a path to a file, or an ECMAScript Module name.
|
||||||
|
|
||||||
### `--max-http-header-size=size`
|
### `--max-http-header-size=size`
|
||||||
<!-- YAML
|
<!-- YAML
|
||||||
@ -981,6 +982,7 @@ Node.js options that are allowed are:
|
|||||||
* `--enable-fips`
|
* `--enable-fips`
|
||||||
* `--es-module-specifier-resolution`
|
* `--es-module-specifier-resolution`
|
||||||
* `--experimental-exports`
|
* `--experimental-exports`
|
||||||
|
* `--experimental-loader`
|
||||||
* `--experimental-modules`
|
* `--experimental-modules`
|
||||||
* `--experimental-policy`
|
* `--experimental-policy`
|
||||||
* `--experimental-repl-await`
|
* `--experimental-repl-await`
|
||||||
@ -998,7 +1000,6 @@ Node.js options that are allowed are:
|
|||||||
* `--inspect-port`, `--debug-port`
|
* `--inspect-port`, `--debug-port`
|
||||||
* `--inspect-publish-uid`
|
* `--inspect-publish-uid`
|
||||||
* `--inspect`
|
* `--inspect`
|
||||||
* `--loader`
|
|
||||||
* `--max-http-header-size`
|
* `--max-http-header-size`
|
||||||
* `--napi-modules`
|
* `--napi-modules`
|
||||||
* `--no-deprecation`
|
* `--no-deprecation`
|
||||||
|
@ -632,7 +632,7 @@ would provide the exports interface for the instantiation of `module.wasm`.
|
|||||||
<!-- type=misc -->
|
<!-- type=misc -->
|
||||||
|
|
||||||
To customize the default module resolution, loader hooks can optionally be
|
To customize the default module resolution, loader hooks can optionally be
|
||||||
provided via a `--loader ./loader-name.mjs` argument to Node.js.
|
provided via a `--experimental-loader ./loader-name.mjs` argument to Node.js.
|
||||||
|
|
||||||
When hooks are used they only apply to ES module loading and not to any
|
When hooks are used they only apply to ES module loading and not to any
|
||||||
CommonJS modules loaded.
|
CommonJS modules loaded.
|
||||||
@ -731,7 +731,7 @@ export async function resolve(specifier,
|
|||||||
With this loader, running:
|
With this loader, running:
|
||||||
|
|
||||||
```console
|
```console
|
||||||
NODE_OPTIONS='--experimental-modules --loader ./custom-loader.mjs' node x.js
|
NODE_OPTIONS='--experimental-modules --experimental-loader ./custom-loader.mjs' node x.js
|
||||||
```
|
```
|
||||||
|
|
||||||
would load the module `x.js` as an ES module with relative resolution support
|
would load the module `x.js` as an ES module with relative resolution support
|
||||||
|
@ -191,9 +191,9 @@ Default is
|
|||||||
V8 Inspector integration allows attaching Chrome DevTools and IDEs to Node.js instances for debugging and profiling.
|
V8 Inspector integration allows attaching Chrome DevTools and IDEs to Node.js instances for debugging and profiling.
|
||||||
It uses the Chrome DevTools Protocol.
|
It uses the Chrome DevTools Protocol.
|
||||||
.
|
.
|
||||||
.It Fl -loader Ns = Ns Ar file
|
.It Fl -experimental-loader Ns = Ns Ar module
|
||||||
Specify the
|
Specify the
|
||||||
.Ar file
|
.Ar module
|
||||||
as a custom loader, to load
|
as a custom loader, to load
|
||||||
.Fl -experimental-modules .
|
.Fl -experimental-modules .
|
||||||
.
|
.
|
||||||
|
@ -400,12 +400,12 @@ function initializeESMLoader() {
|
|||||||
// track of for different ESM modules.
|
// track of for different ESM modules.
|
||||||
setInitializeImportMetaObjectCallback(esm.initializeImportMetaObject);
|
setInitializeImportMetaObjectCallback(esm.initializeImportMetaObject);
|
||||||
setImportModuleDynamicallyCallback(esm.importModuleDynamicallyCallback);
|
setImportModuleDynamicallyCallback(esm.importModuleDynamicallyCallback);
|
||||||
const userLoader = getOptionValue('--loader');
|
const userLoader = getOptionValue('--experimental-loader');
|
||||||
// If --loader is specified, create a loader with user hooks. Otherwise
|
// If --experimental-loader is specified, create a loader with user hooks.
|
||||||
// create the default loader.
|
// Otherwise create the default loader.
|
||||||
if (userLoader) {
|
if (userLoader) {
|
||||||
const { emitExperimentalWarning } = require('internal/util');
|
const { emitExperimentalWarning } = require('internal/util');
|
||||||
emitExperimentalWarning('--loader');
|
emitExperimentalWarning('--experimental-loader');
|
||||||
}
|
}
|
||||||
esm.initializeLoader(process.cwd(), userLoader);
|
esm.initializeLoader(process.cwd(), userLoader);
|
||||||
}
|
}
|
||||||
|
@ -114,7 +114,8 @@ void PerIsolateOptions::CheckOptions(std::vector<std::string>* errors) {
|
|||||||
|
|
||||||
void EnvironmentOptions::CheckOptions(std::vector<std::string>* errors) {
|
void EnvironmentOptions::CheckOptions(std::vector<std::string>* errors) {
|
||||||
if (!userland_loader.empty() && !experimental_modules) {
|
if (!userland_loader.empty() && !experimental_modules) {
|
||||||
errors->push_back("--loader requires --experimental-modules be enabled");
|
errors->push_back("--experimental-loader requires "
|
||||||
|
"--experimental-modules be enabled");
|
||||||
}
|
}
|
||||||
if (has_policy_integrity_string && experimental_policy.empty()) {
|
if (has_policy_integrity_string && experimental_policy.empty()) {
|
||||||
errors->push_back("--policy-integrity requires "
|
errors->push_back("--policy-integrity requires "
|
||||||
@ -311,6 +312,12 @@ EnvironmentOptionsParser::EnvironmentOptionsParser() {
|
|||||||
"experimental support for exports in package.json",
|
"experimental support for exports in package.json",
|
||||||
&EnvironmentOptions::experimental_exports,
|
&EnvironmentOptions::experimental_exports,
|
||||||
kAllowedInEnvironment);
|
kAllowedInEnvironment);
|
||||||
|
AddOption("--experimental-loader",
|
||||||
|
"(with --experimental-modules) use the specified file as a "
|
||||||
|
"custom loader",
|
||||||
|
&EnvironmentOptions::userland_loader,
|
||||||
|
kAllowedInEnvironment);
|
||||||
|
AddAlias("--loader", "--experimental-loader");
|
||||||
AddOption("--experimental-modules",
|
AddOption("--experimental-modules",
|
||||||
"experimental ES Module support and caching modules",
|
"experimental ES Module support and caching modules",
|
||||||
&EnvironmentOptions::experimental_modules,
|
&EnvironmentOptions::experimental_modules,
|
||||||
@ -363,11 +370,6 @@ EnvironmentOptionsParser::EnvironmentOptionsParser() {
|
|||||||
"set module type for string input",
|
"set module type for string input",
|
||||||
&EnvironmentOptions::module_type,
|
&EnvironmentOptions::module_type,
|
||||||
kAllowedInEnvironment);
|
kAllowedInEnvironment);
|
||||||
AddOption("--loader",
|
|
||||||
"(with --experimental-modules) use the specified file as a "
|
|
||||||
"custom loader",
|
|
||||||
&EnvironmentOptions::userland_loader,
|
|
||||||
kAllowedInEnvironment);
|
|
||||||
AddOption("--es-module-specifier-resolution",
|
AddOption("--es-module-specifier-resolution",
|
||||||
"Select extension resolution algorithm for es modules; "
|
"Select extension resolution algorithm for es modules; "
|
||||||
"either 'explicit' (default) or 'node'",
|
"either 'explicit' (default) or 'node'",
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
// Flags: --experimental-modules --loader ./test/fixtures/es-module-loaders/example-loader.mjs
|
// Flags: --experimental-modules --experimental-loader ./test/fixtures/es-module-loaders/example-loader.mjs
|
||||||
/* eslint-disable node-core/require-common-first, node-core/required-modules */
|
/* eslint-disable node-core/require-common-first, node-core/required-modules */
|
||||||
import assert from 'assert';
|
import assert from 'assert';
|
||||||
import ok from '../fixtures/es-modules/test-esm-ok.mjs';
|
import ok from '../fixtures/es-modules/test-esm-ok.mjs';
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
// Flags: --experimental-modules --loader ./test/fixtures/es-module-loaders/loader-with-dep.mjs
|
// Flags: --experimental-modules --experimental-loader ./test/fixtures/es-module-loaders/loader-with-dep.mjs
|
||||||
/* eslint-disable node-core/require-common-first, node-core/required-modules */
|
/* eslint-disable node-core/require-common-first, node-core/required-modules */
|
||||||
import '../fixtures/es-modules/test-esm-ok.mjs';
|
import '../fixtures/es-modules/test-esm-ok.mjs';
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
// Flags: --experimental-modules --loader ./test/fixtures/es-module-loaders/loader-invalid-format.mjs
|
// Flags: --experimental-modules --experimental-loader ./test/fixtures/es-module-loaders/loader-invalid-format.mjs
|
||||||
import { expectsError, mustCall } from '../common/index.mjs';
|
import { expectsError, mustCall } from '../common/index.mjs';
|
||||||
import assert from 'assert';
|
import assert from 'assert';
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
// Flags: --experimental-modules --loader ./test/fixtures/es-module-loaders/loader-invalid-url.mjs
|
// Flags: --experimental-modules --experimental-loader ./test/fixtures/es-module-loaders/loader-invalid-url.mjs
|
||||||
import { expectsError, mustCall } from '../common/index.mjs';
|
import { expectsError, mustCall } from '../common/index.mjs';
|
||||||
import assert from 'assert';
|
import assert from 'assert';
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
// Flags: --experimental-modules --loader ./test/fixtures/es-module-loaders/missing-dynamic-instantiate-hook.mjs
|
// Flags: --experimental-modules --experimental-loader ./test/fixtures/es-module-loaders/missing-dynamic-instantiate-hook.mjs
|
||||||
import { expectsError } from '../common/index.mjs';
|
import { expectsError } from '../common/index.mjs';
|
||||||
|
|
||||||
import('test').catch(expectsError({
|
import('test').catch(expectsError({
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
// Flags: --experimental-modules --loader ./test/fixtures/es-module-loaders/builtin-named-exports-loader.mjs
|
// Flags: --experimental-modules --experimental-loader ./test/fixtures/es-module-loaders/builtin-named-exports-loader.mjs
|
||||||
import '../common/index.mjs';
|
import '../common/index.mjs';
|
||||||
import { readFile } from 'fs';
|
import { readFile } from 'fs';
|
||||||
import assert from 'assert';
|
import assert from 'assert';
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
// Flags: --experimental-modules --loader ./test/fixtures/es-module-loaders/not-found-assert-loader.mjs
|
// Flags: --experimental-modules --experimental-loader ./test/fixtures/es-module-loaders/not-found-assert-loader.mjs
|
||||||
/* eslint-disable node-core/require-common-first, node-core/required-modules */
|
/* eslint-disable node-core/require-common-first, node-core/required-modules */
|
||||||
import './not-found.js';
|
import './not-found.js';
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
// Flags: --experimental-modules --loader ./test/fixtures/es-module-loaders/not-found-assert-loader.mjs
|
// Flags: --experimental-modules --experimental-loader ./test/fixtures/es-module-loaders/not-found-assert-loader.mjs
|
||||||
/* eslint-disable node-core/require-common-first, node-core/required-modules */
|
/* eslint-disable node-core/require-common-first, node-core/required-modules */
|
||||||
import './not-found.mjs';
|
import './not-found.mjs';
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
// Flags: --experimental-modules --loader ./test/fixtures/es-module-loaders/js-loader.mjs
|
// Flags: --experimental-modules --experimental-loader ./test/fixtures/es-module-loaders/js-loader.mjs
|
||||||
/* eslint-disable node-core/require-common-first, node-core/required-modules */
|
/* eslint-disable node-core/require-common-first, node-core/required-modules */
|
||||||
import { namedExport } from '../fixtures/es-module-loaders/js-as-esm.js';
|
import { namedExport } from '../fixtures/es-module-loaders/js-as-esm.js';
|
||||||
import assert from 'assert';
|
import assert from 'assert';
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
// Flags: --experimental-modules --loader ./test/fixtures/es-module-loaders/loader-shared-dep.mjs
|
// Flags: --experimental-modules --experimental-loader ./test/fixtures/es-module-loaders/loader-shared-dep.mjs
|
||||||
import { createRequire } from '../common/index.mjs';
|
import { createRequire } from '../common/index.mjs';
|
||||||
|
|
||||||
import assert from 'assert';
|
import assert from 'assert';
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
// Flags: --experimental-modules --loader ./test/fixtures/es-module-loaders/loader-unknown-builtin-module.mjs
|
// Flags: --experimental-modules --experimental-loader ./test/fixtures/es-module-loaders/loader-unknown-builtin-module.mjs
|
||||||
import { expectsError, mustCall } from '../common/index.mjs';
|
import { expectsError, mustCall } from '../common/index.mjs';
|
||||||
import assert from 'assert';
|
import assert from 'assert';
|
||||||
|
|
||||||
|
@ -87,6 +87,7 @@ const undocumented = difference(process.allowedNodeEnvironmentFlags,
|
|||||||
assert(undocumented.delete('--debug-arraybuffer-allocations'));
|
assert(undocumented.delete('--debug-arraybuffer-allocations'));
|
||||||
assert(undocumented.delete('--experimental-worker'));
|
assert(undocumented.delete('--experimental-worker'));
|
||||||
assert(undocumented.delete('--no-node-snapshot'));
|
assert(undocumented.delete('--no-node-snapshot'));
|
||||||
|
assert(undocumented.delete('--loader'));
|
||||||
|
|
||||||
assert.strictEqual(undocumented.size, 0,
|
assert.strictEqual(undocumented.size, 0,
|
||||||
'The following options are not documented as allowed in ' +
|
'The following options are not documented as allowed in ' +
|
||||||
|
Loading…
x
Reference in New Issue
Block a user