Skip to content

chore: pin Node v24.20.0 in .nvmrc - #204

Merged
kalwalt merged 1 commit into
devfrom
chore/nvmrc-node-24.20.0
Sep 12, 2026
Merged

kalwalt merged 1 commit into
devfrom
chore/nvmrc-node-24.20.0

Conversation

@kalwalt

@kalwalt kalwalt commented Sep 12, 2026

Copy link
Copy Markdown
Member

Why

.nvmrc pinned v24.18.0, which is no longer what nvm install 24 resolves to — a fresh setup lands on v24.20.0 and the nvm shim then refuses to run anything in this repo (Node.js v24.18.0 is not installed or cannot be found), which makes node, npm test and npm run build-ts all fail until the developer hunts down the exact old build.

Safety

  • All four workflows (CI.yml, build.yml, bench.yml, release.yml) read the version via node-version-file: ".nvmrc", so they follow the pin automatically — no workflow edit needed.
  • v24.20.0 bundles npm 11.19.0, so every "npm 11" statement in the docs remains true, and the lockfile rule (regenerate only with npm 11) is unaffected.
  • README.md says "Node.js v24" generically and docs/jsfeat-parity-and-refactor-audit.md sets a floor of "≥ v20.18.0" — neither conflicts.

What else changed, and why it had to change with it

Two files named the old version explicitly and would have silently contradicted the pin:

  • AGENTS.md — "Node: v24.18.0" → v24.20.0 (also reworded to "bundles npm 11", which is the accurate relationship).
  • .github/copilot-instructions.md — same version string, inlined because Copilot injects that file directly.

And one comment became misleading rather than wrong:

  • .github/workflows/release.yml — the note justifying npm install -g npm@latest cited "Node 24.18.0 ships npm 10.9.4" as its reason. The newly pinned 24.20.0 bundles npm 11.19.0, which already clears the npm ≥ 11.5.1 floor Trusted Publishers requires. The step stays — it is now a safeguard against the pin moving rather than a requirement — but the comment now says that instead of implying the bundled npm is too old.

Note

Exact pinning is deliberate and worth keeping: it is what makes CI reproducible. The cost is exactly this maintenance — nvm install 24 tracks the latest 24.x, so the pin needs a bump whenever that moves and someone sets up fresh. Loosening .nvmrc to 24 would remove the chore at the price of CI silently changing Node under us.

🤖 Generated with Claude Code

v24.18.0 is no longer the version `nvm install 24` resolves to, so a fresh
setup lands on 24.20.0 and the shim refuses to run against the pin. 24.20.0
bundles npm 11.19.0, so every "npm 11" claim in the docs still holds, and all
four workflows read the version via `node-version-file: .nvmrc` and follow it
automatically.

Updates the two places that named the old version explicitly (AGENTS.md and
the inlined Copilot instructions) so they cannot drift from the pin, and
refreshes the release workflow's comment about npm lagging Node: the pinned
24.20.0 already clears the npm >= 11.5.1 floor Trusted Publishers needs, so
`npm install -g npm@latest` is now a safeguard against the pin moving rather
than a requirement. The step stays.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@qodo-code-review

Copy link
Copy Markdown

ⓘ Qodo reviews are paused because your trial has ended. Ask your workspace admin to add credits to resume reviews. Manage billing

@kalwalt kalwalt self-assigned this Sep 12, 2026
@kalwalt kalwalt added enhancement New feature or request dependencies Pull requests that update a dependency file npm documentation Improvements or additions to documentation labels Sep 12, 2026
@kalwalt
kalwalt merged commit 92862d7 into dev Sep 12, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file documentation Improvements or additions to documentation enhancement New feature or request npm

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant