Skip to content

Commit 15fb02a

Browse files
reasonablytallTrott
authored andcommitted
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: nodejs/modules#351 (comment) PR-URL: #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>
1 parent 1c5a3f0 commit 15fb02a

17 files changed

+32
-28
lines changed

doc/api/cli.md

+4-3
Original file line numberDiff line numberDiff line change
@@ -368,12 +368,13 @@ Specify ways of the inspector web socket url exposure.
368368
By default inspector websocket url is available in stderr and under `/json/list`
369369
endpoint on `http://host:port/json/list`.
370370

371-
### `--loader=file`
371+
### `--experimental-loader=module`
372372
<!-- YAML
373373
added: v9.0.0
374374
-->
375375

376-
Specify the `file` of the custom [experimental ECMAScript Module][] loader.
376+
Specify the `module` of a custom [experimental ECMAScript Module][] loader.
377+
`module` may be either a path to a file, or an ECMAScript Module name.
377378

378379
### `--max-http-header-size=size`
379380
<!-- YAML
@@ -981,6 +982,7 @@ Node.js options that are allowed are:
981982
* `--enable-fips`
982983
* `--es-module-specifier-resolution`
983984
* `--experimental-exports`
985+
* `--experimental-loader`
984986
* `--experimental-modules`
985987
* `--experimental-policy`
986988
* `--experimental-repl-await`
@@ -998,7 +1000,6 @@ Node.js options that are allowed are:
9981000
* `--inspect-port`, `--debug-port`
9991001
* `--inspect-publish-uid`
10001002
* `--inspect`
1001-
* `--loader`
10021003
* `--max-http-header-size`
10031004
* `--napi-modules`
10041005
* `--no-deprecation`

doc/api/esm.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -632,7 +632,7 @@ would provide the exports interface for the instantiation of `module.wasm`.
632632
<!-- type=misc -->
633633
634634
To customize the default module resolution, loader hooks can optionally be
635-
provided via a `--loader ./loader-name.mjs` argument to Node.js.
635+
provided via a `--experimental-loader ./loader-name.mjs` argument to Node.js.
636636
637637
When hooks are used they only apply to ES module loading and not to any
638638
CommonJS modules loaded.
@@ -731,7 +731,7 @@ export async function resolve(specifier,
731731
With this loader, running:
732732
733733
```console
734-
NODE_OPTIONS='--experimental-modules --loader ./custom-loader.mjs' node x.js
734+
NODE_OPTIONS='--experimental-modules --experimental-loader ./custom-loader.mjs' node x.js
735735
```
736736
737737
would load the module `x.js` as an ES module with relative resolution support

doc/node.1

+2-2
Original file line numberDiff line numberDiff line change
@@ -191,9 +191,9 @@ Default is
191191
V8 Inspector integration allows attaching Chrome DevTools and IDEs to Node.js instances for debugging and profiling.
192192
It uses the Chrome DevTools Protocol.
193193
.
194-
.It Fl -loader Ns = Ns Ar file
194+
.It Fl -experimental-loader Ns = Ns Ar module
195195
Specify the
196-
.Ar file
196+
.Ar module
197197
as a custom loader, to load
198198
.Fl -experimental-modules .
199199
.

lib/internal/bootstrap/pre_execution.js

+4-4
Original file line numberDiff line numberDiff line change
@@ -400,12 +400,12 @@ function initializeESMLoader() {
400400
// track of for different ESM modules.
401401
setInitializeImportMetaObjectCallback(esm.initializeImportMetaObject);
402402
setImportModuleDynamicallyCallback(esm.importModuleDynamicallyCallback);
403-
const userLoader = getOptionValue('--loader');
404-
// If --loader is specified, create a loader with user hooks. Otherwise
405-
// create the default loader.
403+
const userLoader = getOptionValue('--experimental-loader');
404+
// If --experimental-loader is specified, create a loader with user hooks.
405+
// Otherwise create the default loader.
406406
if (userLoader) {
407407
const { emitExperimentalWarning } = require('internal/util');
408-
emitExperimentalWarning('--loader');
408+
emitExperimentalWarning('--experimental-loader');
409409
}
410410
esm.initializeLoader(process.cwd(), userLoader);
411411
}

src/node_options.cc

+8-6
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,8 @@ void PerIsolateOptions::CheckOptions(std::vector<std::string>* errors) {
114114

115115
void EnvironmentOptions::CheckOptions(std::vector<std::string>* errors) {
116116
if (!userland_loader.empty() && !experimental_modules) {
117-
errors->push_back("--loader requires --experimental-modules be enabled");
117+
errors->push_back("--experimental-loader requires "
118+
"--experimental-modules be enabled");
118119
}
119120
if (has_policy_integrity_string && experimental_policy.empty()) {
120121
errors->push_back("--policy-integrity requires "
@@ -311,6 +312,12 @@ EnvironmentOptionsParser::EnvironmentOptionsParser() {
311312
"experimental support for exports in package.json",
312313
&EnvironmentOptions::experimental_exports,
313314
kAllowedInEnvironment);
315+
AddOption("--experimental-loader",
316+
"(with --experimental-modules) use the specified file as a "
317+
"custom loader",
318+
&EnvironmentOptions::userland_loader,
319+
kAllowedInEnvironment);
320+
AddAlias("--loader", "--experimental-loader");
314321
AddOption("--experimental-modules",
315322
"experimental ES Module support and caching modules",
316323
&EnvironmentOptions::experimental_modules,
@@ -363,11 +370,6 @@ EnvironmentOptionsParser::EnvironmentOptionsParser() {
363370
"set module type for string input",
364371
&EnvironmentOptions::module_type,
365372
kAllowedInEnvironment);
366-
AddOption("--loader",
367-
"(with --experimental-modules) use the specified file as a "
368-
"custom loader",
369-
&EnvironmentOptions::userland_loader,
370-
kAllowedInEnvironment);
371373
AddOption("--es-module-specifier-resolution",
372374
"Select extension resolution algorithm for es modules; "
373375
"either 'explicit' (default) or 'node'",

test/es-module/test-esm-example-loader.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// Flags: --experimental-modules --loader ./test/fixtures/es-module-loaders/example-loader.mjs
1+
// Flags: --experimental-modules --experimental-loader ./test/fixtures/es-module-loaders/example-loader.mjs
22
/* eslint-disable node-core/require-common-first, node-core/required-modules */
33
import assert from 'assert';
44
import ok from '../fixtures/es-modules/test-esm-ok.mjs';

test/es-module/test-esm-loader-dependency.mjs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// Flags: --experimental-modules --loader ./test/fixtures/es-module-loaders/loader-with-dep.mjs
1+
// Flags: --experimental-modules --experimental-loader ./test/fixtures/es-module-loaders/loader-with-dep.mjs
22
/* eslint-disable node-core/require-common-first, node-core/required-modules */
33
import '../fixtures/es-modules/test-esm-ok.mjs';
44

test/es-module/test-esm-loader-invalid-format.mjs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// Flags: --experimental-modules --loader ./test/fixtures/es-module-loaders/loader-invalid-format.mjs
1+
// Flags: --experimental-modules --experimental-loader ./test/fixtures/es-module-loaders/loader-invalid-format.mjs
22
import { expectsError, mustCall } from '../common/index.mjs';
33
import assert from 'assert';
44

test/es-module/test-esm-loader-invalid-url.mjs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// Flags: --experimental-modules --loader ./test/fixtures/es-module-loaders/loader-invalid-url.mjs
1+
// Flags: --experimental-modules --experimental-loader ./test/fixtures/es-module-loaders/loader-invalid-url.mjs
22
import { expectsError, mustCall } from '../common/index.mjs';
33
import assert from 'assert';
44

test/es-module/test-esm-loader-missing-dynamic-instantiate-hook.mjs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// Flags: --experimental-modules --loader ./test/fixtures/es-module-loaders/missing-dynamic-instantiate-hook.mjs
1+
// Flags: --experimental-modules --experimental-loader ./test/fixtures/es-module-loaders/missing-dynamic-instantiate-hook.mjs
22
import { expectsError } from '../common/index.mjs';
33

44
import('test').catch(expectsError({

test/es-module/test-esm-named-exports.mjs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// Flags: --experimental-modules --loader ./test/fixtures/es-module-loaders/builtin-named-exports-loader.mjs
1+
// Flags: --experimental-modules --experimental-loader ./test/fixtures/es-module-loaders/builtin-named-exports-loader.mjs
22
import '../common/index.mjs';
33
import { readFile } from 'fs';
44
import assert from 'assert';
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
// Flags: --experimental-modules --loader ./test/fixtures/es-module-loaders/not-found-assert-loader.mjs
1+
// Flags: --experimental-modules --experimental-loader ./test/fixtures/es-module-loaders/not-found-assert-loader.mjs
22
/* eslint-disable node-core/require-common-first, node-core/required-modules */
33
import './not-found.js';
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
// Flags: --experimental-modules --loader ./test/fixtures/es-module-loaders/not-found-assert-loader.mjs
1+
// Flags: --experimental-modules --experimental-loader ./test/fixtures/es-module-loaders/not-found-assert-loader.mjs
22
/* eslint-disable node-core/require-common-first, node-core/required-modules */
33
import './not-found.mjs';

test/es-module/test-esm-resolve-hook.mjs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// Flags: --experimental-modules --loader ./test/fixtures/es-module-loaders/js-loader.mjs
1+
// Flags: --experimental-modules --experimental-loader ./test/fixtures/es-module-loaders/js-loader.mjs
22
/* eslint-disable node-core/require-common-first, node-core/required-modules */
33
import { namedExport } from '../fixtures/es-module-loaders/js-as-esm.js';
44
import assert from 'assert';

test/es-module/test-esm-shared-loader-dep.mjs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// Flags: --experimental-modules --loader ./test/fixtures/es-module-loaders/loader-shared-dep.mjs
1+
// Flags: --experimental-modules --experimental-loader ./test/fixtures/es-module-loaders/loader-shared-dep.mjs
22
import { createRequire } from '../common/index.mjs';
33

44
import assert from 'assert';

test/parallel/test-loaders-unknown-builtin-module.mjs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// Flags: --experimental-modules --loader ./test/fixtures/es-module-loaders/loader-unknown-builtin-module.mjs
1+
// Flags: --experimental-modules --experimental-loader ./test/fixtures/es-module-loaders/loader-unknown-builtin-module.mjs
22
import { expectsError, mustCall } from '../common/index.mjs';
33
import assert from 'assert';
44

test/parallel/test-process-env-allowed-flags-are-documented.js

+1
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,7 @@ const undocumented = difference(process.allowedNodeEnvironmentFlags,
8787
assert(undocumented.delete('--debug-arraybuffer-allocations'));
8888
assert(undocumented.delete('--experimental-worker'));
8989
assert(undocumented.delete('--no-node-snapshot'));
90+
assert(undocumented.delete('--loader'));
9091

9192
assert.strictEqual(undocumented.size, 0,
9293
'The following options are not documented as allowed in ' +

0 commit comments

Comments
 (0)