Repository navigation
Run on Node 24 LTS and current dependencies, with one Node version everywhere - #18
Merged
Merged
Conversation
…erywhere. .nvmrc and package.json engines name Node 24; a test keeps them and CI in step, CI's required check reads .nvmrc, and a non-blocking job runs the newest LTS and Current. Railway reads engines, so production moves from 22 to 24 on the next deploy. Express 5, PGlite 0.5, TypeScript 6.0, ESLint 10, @types/node 24; npm ci refuses an older Node. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
A RAILPACK_NODE_VERSION=22 variable, which Railpack reads before engines, pins all three environments; merging this alone leaves production on 22. Co-Authored-By: Claude Opus 5.5 (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.
Stacked on #17. Merge order: #15 → #16 → #17 → this.
One Node version, read everywhere
cd).nvmrc24CIcheck.nvmrc(node-version-file)RAILPACK_NODE_VERSIONvariable first (currently 22 in every environment), thenengines.nvmrcnpm ciengines+.npmrcengine-strict=trueEBADENGINE, checked on 22)test/toolchain.test.tsfails if.nvmrcandenginesname different lines, if the line is odd (non-LTS), if CI stops reading.nvmrc, or if the tests themselves run on an older Node.railway sshreads 22.23.2 in production, uat and development. ARAILPACK_NODE_VERSION=22variable that Railpack reads beforeenginespins it (I missed that variable at first). Move Railway from railway.json to Infrastructure as Code #19 makes.railway/railway.tsset it from.nvmrc. The server now logsNode vXat boot, sorailway logsshows what a deploy actually runs.Next Nodejob runslts/*andlatest. When Node 26 becomes LTS, thelts/*job tests it automatically. Moving production is then one edit to.nvmrcandengines, which the toolchain test keeps together. The required check is still namedCI, matching branch protection on develop, main and staging.Dependencies
No source changes were needed beyond the boot log. Express 5 also means a rejected async handler now reaches the error handler; under Express 4 such a request never got a response.
npm 12 (which ships with Node 24) blocks install scripts unless allowed.
allowScriptspermits esbuild's and fsevents', which npm 10 always ran. Older npm ignores the field, and I confirmed the lockfile installs cleanly with npm 10.Checks (Node 24.21.0)
npm test100/100 with 0 failures over 20 full runs, plus typecheck, lint (0 errors, the 2 existing warnings) and build.Railway config migration
Done in #19, which is stacked on this PR.
🤖 Generated with Claude Code