`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>
197 B
197 B
pacquet
| pacquet |
|---|
| patch |
pnpm update now moves the devEngines.runtime and engines.runtime version ranges to the resolved Node.js version #14988.