Skip to content

feat!: migrate action runtime and toolchain to node24 - #93

Merged
Kevin-de-Jong merged 1 commit into
mainfrom
feat/node24-runtime
Sep 16, 2026
Merged

Kevin-de-Jong merged 1 commit into
mainfrom
feat/node24-runtime

Conversation

@Kevin-de-Jong

Copy link
Copy Markdown
Contributor

Brings CommitMe in line with ReleaseMe; the action now runs on the node24 runtime instead of node20.

action.yml switches to using: node24, engines.node becomes >=24 and validate.yml builds and tests on Node 24.x. The @tsconfig/node20 base is replaced by the explicit compiler options ReleaseMe uses - ES2024 target and lib, module: nodenext.

The dev-dependency churn follows from that; @types/node v24 needs a newer TypeScript, which needs typescript-eslint v8, which needs eslint-plugin-jest v28. Two formatting rules (func-call-spacing, type-annotation-spacing) are dropped from .eslintrc.yml as typescript-eslint v8 no longer ships them - same as ReleaseMe, and Prettier already covers this.

Note that this is breaking for anyone on a self-hosted runner older than Actions Runner v2.327.0, which is where node24 action support landed.

Verified locally; npm run lint, npm run test (37 passing) and npm run build are clean, and I smoke-tested the rebuilt lib/ bundles for all three entrypoints (CLI help, pre-commit hook against a compliant and a non-compliant message, and the action failing as expected without a token).

This commit moves the GitHub Action runtime from `node20` to `node24`,
in line with ReleaseMe, and aligns the build toolchain accordingly:

- `action.yml` now runs `using: node24`; `engines.node` becomes `>=24`
- `validate.yml` builds and tests on Node 24.x
- `@tsconfig/node20` is dropped in favour of explicit compiler options
  targeting ES2024 - the same set ReleaseMe uses
- `@types/node` is bumped to v24

The `typescript-eslint` v8 and `eslint-plugin-jest` v28 bumps are needed
for the ES2024 target; the v6 parser rejects `es2024` in `lib`, and
`eslint-plugin-jest` v27 pins the older `typescript-eslint` as a peer.
That in turn drops the `func-call-spacing` and `type-annotation-spacing`
rules from `.eslintrc.yml` as v8 no longer ships them - same as ReleaseMe,
and Prettier already covers this.

Note that `lib/` is unchanged; ncc emits identical bundles for the ES2024
target.

BREAKING CHANGE: the action requires a runner with the `node24` runtime
(Actions Runner v2.327.0 or newer).

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@Kevin-de-Jong
Kevin-de-Jong merged commit 9475e93 into main Sep 16, 2026
7 checks passed
@Kevin-de-Jong
Kevin-de-Jong deleted the feat/node24-runtime branch September 16, 2026 12:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant