After two months of baking time in Node.js 20, npm 10 is backported, so that all release lines include a supported version of npm. This release includes npm v10.2.3.
Refer to https://github.com/nodejs/Release/issues/884 for the plan to land npm 10.
Loaders now apply to subsequent loaders, for example: --experimental-loader ts-node --experimental-loader loader-written-in-typescript
.
Contributed by Maël Nison in #43772.
node:module
API register
for module customization hooks; new initialize
hookThere is a new API register
available on node:module
to specify a file that exports module customization hooks, and pass data to the hooks, and establish communication channels with them. The “define the file with the hooks” part was previously handled by a flag --experimental-loader
, but when the hooks moved into a dedicated thread in 20.0.0 there was a need to provide a way to communicate between the main (application) thread and the hooks thread. This can now be done by calling register
from the main thread and passing data, including MessageChannel
instances.
We encourage users to migrate to an approach that uses --import
with register
, such as:
node --import ./file-that-calls-register.js ./app.js
Using --import
ensures that the customization hooks are registered before any application code runs, even the entry point.
Contributed by João Lenon and Jacob Smith in #46826, Izaak Schroeder and Jacob Smith in #48842 and #48559.
import.meta.resolve
unflaggedIn ES modules, import.meta.resolve(specifier)
can be used to get an absolute URL string to which specifier
resolves, similar
to require.resolve
in CommonJS. This aligns Node.js with browsers and other server-side runtimes.
Contributed by Guy Bedford in #49028.
--experimental-default-type
flag to flip module defaultsThe new flag --experimental-default-type
can be used to flip the default
module system used by Node.js. Input that is already explicitly defined as ES
modules or CommonJS, such as by a package.json
"type"
field or .mjs
/.cjs
file extension or the --input-type
flag, is unaffected. What is currently
implicitly CommonJS would instead be interpreted as ES modules under
--experimental-default-type=module
:
String input provided via --eval
or STDIN, if --input-type
is unspecified.
Files ending in .js
or with no extension, if there is no package.json
file
present in the same folder or any parent folder.
Files ending in .js
or with no extension, if the nearest parent
package.json
field lacks a type
field; unless the folder is inside a
node_modules
folder.
In addition, extensionless files are interpreted as Wasm if
--experimental-wasm-modules
is passed and the file contains the "magic bytes"
Wasm header.
Contributed by Geoffrey Booth in #49869.
ed2d46f4cc
] - doc: move and rename loaders section (Geoffrey Booth) #4926192734d4480
] - esm: use import attributes instead of import assertions (Antoine du Hamel) #50140e96f7ef881
] - (SEMVER-MINOR) vm: use import attributes instead of import assertions (Antoine du Hamel) #50141Many changes to the built-in test runner have been backported. This includes the following additions:
b283ae4238
] - (SEMVER-MINOR) test_runner: accept testOnly
in run
(Moshe Atlow) #49753059b1945d8
] - (SEMVER-MINOR) test_runner: add junit reporter (Moshe Atlow) #49614d61a505546
] - (SEMVER-MINOR) test_runner: expose location of tests (Colin Ihrig) #48975b55eb2a8d1
] - (SEMVER-MINOR) test_runner: add shards support (Raz Luvaton) #4863905e7f28b40
] - (SEMVER-MINOR) test_runner: add initial draft for fakeTimers (Erick Wendel) #47775428301ad27
] - (SEMVER-MINOR) test_runner, cli: add --test-concurrency flag (Colin Ihrig) #499960c4a84e8e9
] - (SEMVER-MINOR) deps: update uvwasi to 0.0.19 (Node.js GitHub Bot) #49908fae60c5841
] - stream: use bitmap in readable state (Benjamin Gruenbaum) #4974517246be158
] - (SEMVER-MINOR) lib: add api to detect whether source-maps are enabled (翠 / green) #463912e9f7284a1
] - (SEMVER-MINOR) lib: add tracing channel to diagnostics_channel (Stephen Belanger) #44943cc7bf1f641
] - (SEMVER-MINOR) src: add cjs_module_lexer_version base64_version (Jithil P Ponnan) #45629b5d16cd8f0
] - (SEMVER-MINOR) tls: add ALPNCallback server option for dynamic ALPN negotiation (Tim Perry) #45190Updates may require up to 24 hours to propagate to mirrors. If the following command doesn't work, please retry later:
sudo dnf upgrade --refresh --advisory=FEDORA-2023-f4bfad1d0f
Please login to add feedback.
This update has been submitted for testing by sgallagh.
This update's test gating status has been changed to 'ignored'.
This update has been pushed to testing.
no regressions noted
This update has been submitted for stable by bodhi.
This update has been pushed to stable.