Bump Node to 24.19.0 and enforce npm >= 11.10.0 toolchain - #56
Conversation
|
All contributors have signed the CLA ✍️ ✅ |
|
I have read the CLA Document and I hereby sign the CLA |
| "node": ">=20.10.0", | ||
| "npm": ">=10.2.3" | ||
| }, | ||
| "devEngines": { |
There was a problem hiding this comment.
I see two options here:
-
Continue using
engines, as we have historically. We could update it to Node>=24.19.0and npm>=11.10.0, although it only warns withoutengine-strict, I think it copies our existing patterns. -
Treat this strictly as a development-toolchain requirement. Keep
devEngines, but removeenginessince the library itself does not require Node 20+..nvmrcensures contributors and CI use an npm version that supportsdevEngines, and CI’snpm install/npm ciwill catch mismatches between them.
Option 2 seems more technically accurate and avoids maintaining two different sets of requirements. The remaining caveat is that npm <10.9 ignores devEngines if someone bypasses .nvmrc.
cc @roryabraham for other thoughts.
There was a problem hiding this comment.
👍🏼 to keeping devEngines and dropping engines
There was a problem hiding this comment.
Went with option 2 in 86ef72a — dropped engines from package.json and the lockfile root, kept devEngines.
Details
Prep for rolling out npm's
min-release-agecooldown (https://github.com/Expensify/Expensify/issues/636594). That setting requires npm >= 11.10.0, so this bumps and enforces the toolchain first:.nvmrc:24.11.0->24.19.0package.json: replaceengineswithdevEnginesrequiringnode >= 24.19.0/npm >= 11.10.0(same block asexpensify-common).devEnginesonly applies to contributors, not consumers of the published package, soenginesis dropped rather than maintaining two sets of requirements.package-lock.json: root entry synced to dropengines, no dependency changesNo
.npmrcormin-release-ageyet — that's a follow-up. CI already reads.nvmrc.Related Issues
For https://github.com/Expensify/Expensify/issues/678052
Manual Tests
nvm use 24.19.0 && npm cisucceedsnpm run ts,npx eslint src,npx prettier . --checkpassnvm use 24.11.0 && npm ci --ignore-scriptsfails withEBADDEVENGINESLinked PRs
N/A