chore(core)!: bump Node engine to >=22, drop EOL Node 20#287
Open
TylerVigario wants to merge 4 commits intomainfrom
Open
chore(core)!: bump Node engine to >=22, drop EOL Node 20#287TylerVigario wants to merge 4 commits intomainfrom
TylerVigario wants to merge 4 commits intomainfrom
Conversation
BREAKING CHANGE: minimum supported Node version is now 22. Users on Node 20 (now EOL as of April 2026) must upgrade. - engines.node: >=20 -> >=22 (oldest non-EOL LTS) - CI matrix: ['20','22','25'] -> ['22','26']; coverage stays on 24 (LTS) - Release workflow: Node 25 -> 26 (25 hit EOL with 26's release) - Tooling jobs (lint, build, pr-title) stay on 24 LTS - README, CONTRIBUTING, CLAUDE.md, rollup comment: 20 references updated Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
94ce654 to
5a7972b
Compare
- ava: ^7.0.0 -> ^8.0.0 (major) - @babel/preset-env: ^7.29.2 -> ^7.29.3 - @commitlint/cli: ^20.5.0 -> ^20.5.3 - @commitlint/config-conventional: ^20.5.0 -> ^20.5.3 ava v8 drops Node 20 support (requires 22.20+/24.12+), aligning with the engine bump in this branch. No config or test code changes needed: existing ava config (extensions, files, timeout, concurrency, workerThreads) is unchanged in v8, and the suite is already pure ESM with no CommonJS, transpiler hooks, or @ava/typescript usage. 264 tests pass on v8 without modification. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Node 22+ ships a built-in `node --run <script>` that skips the npm shell wrapper, shaving ~100-300ms per invocation. Replaces nested `npm run X && npm run Y` chains in package.json scripts. - build, build:dist, build:types, clean, clean:all: nested calls now use node --run - coverage: c8 node --run test:unit - lint: node --run lint:js && node --run lint:md - test: node --run test:unit && node --run build:types - lint:fix: inlined as `standard --fix && markdownlint-cli2 --fix` (node --run does not forward CLI args, so the indirection is removed) Outer entry points (npm test, npm run build, npm run lint) keep working unchanged from a user perspective; they just dispatch faster internally. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Node 26 entries currently fail with "Unable to find Node version '26'" because actions/node-versions hasn't published a v26 build yet, even though Node 26 itself is released. Adding a comment to clarify the matrix red is upstream tooling, not a code or workflow issue. Will resolve automatically when actions/node-versions ships v26. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
BREAKING: minimum supported Node version is now 22. Users on Node 20 (now EOL as of April 2026) must upgrade.
>=20→>=22(oldest non-EOL LTS).['20', '22', '25']→['22', '26']. Coverage gate stays on Node 24 (LTS).'25'→'26'. Node 25 hit EOL with Node 26's release.avaconfig changes needed; 264 tests pass on v8.@babel/preset-env,@commitlint/cli,@commitlint/config-conventional.node --runadoption for chainedpackage.jsonscripts. Node 22+ stable feature; skips the npm shell wrapper for ~100-300ms savings per nested call. Outer entry points (npm test,npm run build, etc.) unchanged from a user perspective.Versioning
The
!marks this as a breaking change → next release will be a major bump (5.0.0). Consistent with how prior Node engine drops have been handled in this repo.Test plan
npm testpasses locally on Node 24 with ava v8npm run build,npm run lint,npm run lint:fix,npm run clean:allverified afternode --runconversionactions/setup-nodemanifest hasn't picked it up yet, not a code issue)🤖 Generated with Claude Code