Files
pnpm/.changeset/update-runtime-range.md
T
99369226dc fix(update): move a runtime range onto the version it resolved (#15002)
`pnpm update` folds `devEngines.runtime` and `engines.runtime` entries into
`devDependencies` and `dependencies` as `runtime:<range>` specifiers. The pass
that moves a declared range onto the version the run resolved recognized only
the `npm:` and `jsr:` prefixes, so a `runtime:` declaration kept its old text in
`package.json` while the lockfile recorded the new version.

Both update paths now dispatch on the dependency's alias. A `node` declaration
is saved through the node resolver's own
`normalize_node_runtime_version_specifier`, the rule `add` and `--latest` use: a
stable pick keeps the declared operator, a prerelease is pinned exactly so the
release channel it came from survives, an unknown channel is left for the
resolver to reject, and a range selector keeps the `runtime:` protocol.

`deno` and `bun` declare through `runtime:` too, but their resolvers report the
declared selector back unchanged, so an update leaves their declarations as
written and records an explicit selector as asked, under the protocol a bare
rewrite used to drop.

Closes pnpm/pnpm#14988

---------

Co-authored-by: Tung Lam <lamphamabtung96@gmail.com>
Co-authored-by: Zoltan Kochan <z@kochan.io>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-19 01:57:12 +02:00

197 B

pacquet
pacquet
patch

pnpm update now moves the devEngines.runtime and engines.runtime version ranges to the resolved Node.js version #14988.