Repository navigation
build: require Node 24 and drop Node 22 - #39
Merged
Merged
Conversation
engines was ^22.12.0, which npm reads as Node 22 only, so Node 24 got an engine warning. It now allows ^22.12.0 || ^24.0.0, and a node-24 job runs the unit, frontend, integration and build steps next to the Node 22 ones. It is a separate job because the rules of main ask for checks named test and drivers.
The Docker example builds and runs on node:24-bookworm-slim. The commit check, the drivers job and the npm publish run on Node 24. The test job stays on Node 22, the oldest supported line, beside the node-24 job.
After a wrong answer, confirm asked the question again with rl.prompt(). When the input ended in the same chunk (printf 'what\n' | cms-import), the interface was already closed, and Node 24 throws ERR_USE_AFTER_CLOSE there where Node 22 let it pass. The question is now asked again only while the input is open, so a closed input still counts as no.
engines is now ^24.0.0, every CI job runs on Node 24, and the separate node-24 job is gone because test is the Node 24 job now. The README, CONTRIBUTING, the create-site skill and the changelog say Node 24.
xiaodoudou
added a commit
that referenced
this pull request
Oct 12, 2026
build: require Node 24 and drop Node 22
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.
engineswas^22.12.0. It is now^24.0.0, inpackage.jsonand the lockfile, so installing on Node 22 prints an engine warning. Node 24 is the only supported version.Every CI job runs on Node 24: the commit check,
test,driversand the npm publish. The Docker example runs onnode:24-bookworm-slim. The README, CONTRIBUTING, the create-site skill and the changelog say Node 24.The first run on Node 24 found a bug in
lib/util/confirm.js, the yes or no question ofcms-importandcms-import-remote. After a wrong answer it asked again withrl.prompt(). If the input had already ended, for example a pipe that closes right after the answer, the interface was closed, and Node 24 throwsERR_USE_AFTER_CLOSEwhere Node 22 does not. It now asks again only while the input is open, so a closed input still counts as no.Dropping Node 22 is a breaking change for anyone still on it.
enginesonly warns unless a project setsengine-strict. Node 26 is not LTS yet, so it is not in the range. The Docker example depends onembed-cms ^3.0.4, which resolves to 3.1.0, whoseenginesis still^22.12.0, sonpm installin the container prints an engine warning until the next release.Run locally on Node 22: the frontend suite (122 files, 2856 tests), ESLint, the audit, the Docker example test and the
confirmtests. The backend suites were not run locally; CI ran them on Node 24.