Skip to content

Commit c3a1303

Browse files
reasonablytalltargos
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 2a6b7b0 commit c3a1303

17 files changed

+32
-28
lines changed

doc/api/cli.md

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

398-
### `--loader=file`
398+
### `--experimental-loader=module`
399399
<!-- YAML
400400
added: v9.0.0
401401
-->
402402

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

405406
### `--max-http-header-size=size`
406407
<!-- YAML
@@ -1001,6 +1002,7 @@ Node.js options that are allowed are:
10011002
* `--enable-fips`
10021003
* `--es-module-specifier-resolution`
10031004
* `--experimental-exports`
1005+
* `--experimental-loader`
10041006
* `--experimental-modules`
10051007
* `--experimental-policy`
10061008
* `--experimental-repl-await`
@@ -1018,7 +1020,6 @@ Node.js options that are allowed are:
10181020
* `--inspect-port`, `--debug-port`
10191021
* `--inspect-publish-uid`
10201022
* `--inspect`
1021-
* `--loader`
10221023
* `--max-http-header-size`
10231024
* `--napi-modules`
10241025
* `--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
@@ -200,9 +200,9 @@ Default is
200200
V8 Inspector integration allows attaching Chrome DevTools and IDEs to Node.js instances for debugging and profiling.
201201
It uses the Chrome DevTools Protocol.
202202
.
203-
.It Fl -loader Ns = Ns Ar file
203+
.It Fl -experimental-loader Ns = Ns Ar module
204204
Specify the
205-
.Ar file
205+
.Ar module
206206
as a custom loader, to load
207207
.Fl -experimental-modules .
208208
.

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 "
@@ -315,6 +316,12 @@ EnvironmentOptionsParser::EnvironmentOptionsParser() {
315316
"experimental support for exports in package.json",
316317
&EnvironmentOptions::experimental_exports,
317318
kAllowedInEnvironment);
319+
AddOption("--experimental-loader",
320+
"(with --experimental-modules) use the specified file as a "
321+
"custom loader",
322+
&EnvironmentOptions::userland_loader,
323+
kAllowedInEnvironment);
324+
AddAlias("--loader", "--experimental-loader");
318325
AddOption("--experimental-modules",
319326
"experimental ES Module support and caching modules",
320327
&EnvironmentOptions::experimental_modules,
@@ -376,11 +383,6 @@ EnvironmentOptionsParser::EnvironmentOptionsParser() {
376383
"set module type for string input",
377384
&EnvironmentOptions::module_type,
378385
kAllowedInEnvironment);
379-
AddOption("--loader",
380-
"(with --experimental-modules) use the specified file as a "
381-
"custom loader",
382-
&EnvironmentOptions::userland_loader,
383-
kAllowedInEnvironment);
384386
AddOption("--es-module-specifier-resolution",
385387
"Select extension resolution algorithm for es modules; "
386388
"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)