Repository navigation
fix: declare one supported Node.js range, ^22.18.0 || ^24.11.0 || >=26.0.0 - #351
wmadden-electric wants to merge 3 commits into
Conversation
Every Prisma 8 tool supports one Node.js range: ^22.18.0 || ^24.11.0 || >=26.0.0. create-prisma and the projects it generates already declare it; Composer's packages declared >=22.18.0, which also admits odd-numbered lines and the Node 24 releases before its first long-term-support release. All 14 manifests that declare engines.node now use the range, and a script test fails when any workspace manifest declares a different one. The DEPLOY.NODE_MISSING fix message names the same range. Signed-off-by: willbot <w.a.madden+machine@gmail.com> Signed-off-by: Will Madden <madden@prisma.io>
The node-floor job ran only on 22.18.0. The range now has three lower bounds, so the job is a matrix over 22.18.0, 24.11.0 and 26.0.0. The 22.18 entry keeps its check name, "Node 22.18 floor". On Node 24.11 to 24.13, rmSync on a symlink to a directory throws EISDIR, which failed one script test. The test now removes the link with unlinkSync, the call meant for links. Signed-off-by: willbot <w.a.madden+machine@gmail.com> Signed-off-by: Will Madden <madden@prisma.io>
The README, the getting-started and deploying guides, the deploy CLI design doc and the skill now say: Node.js 22.18 or newer on the 22 line, 24.11 or newer on the 24 line, or 26 or newer, with the npm that Node release ships. The skill gains a failure-mode entry for ERR_UNKNOWN_FILE_EXTENSION on the app's own .ts entry, which is what a too-old Node looks like. Signed-off-by: willbot <w.a.madden+machine@gmail.com> Signed-off-by: Will Madden <madden@prisma.io>
|
✅ Gizmo reviewed 9107e72 — posted 0 inline comment(s) this pass. Open findings: none Change walkthroughThis PR replaces Composer's open-ended Manifests — All three published packages (packages/9-public/composer and siblings) and the 11 private Guardrail test — New scripts/supported-node-range.test.mjs asserts every CI — The CLI error message — run-alchemy.ts names the full range in the Test infrastructure fix — check-cli-engine-pin-host.test.mjs switches to Docs and skill — README, both guides, the deploy-cli domain doc, and the skill's new failure-mode entry 11 all carry the same prose wording and the literal range; no stale |
|
Important
This repository does not receive automatic reviews because it has fewer than 10 stars. ⚙️ Run configuration
Comment |
commit: |
Linked issue
n/a — small change
Summary
Composer's published packages now declare the same supported Node.js range as every other Prisma 8 tool:
In prose: Node.js 22.18 or newer on the 22 line, 24.11 or newer on the 24 line, or 26 or newer, each with the npm that Node release ships (npm 10 on Node 22).
Why one range
A user starts a Prisma 8 project with create-prisma, which writes the range above into their
package.json. Composer then said something different:>=22.18.0. Two tools in the same project gave two answers to "which Node do I need?", and the README, guides and skill repeated Composer's answer. Prisma decided that every Prisma 8 tool supports exactly one range, so this PR makes Composer match.Why these three bounds
.tsentry with Node's own loader. On 22.17prisma deploystops atERR_UNKNOWN_FILE_EXTENSION.What changes for users
engine-strict). Yarn 1 refuses to install unless run with--ignore-engines, so a Yarn 1 user there can no longer install Composer. Bun and Yarn 2 or newer ignoreengines. Composer itself behaves as before; it has no runtime version check.prismaruns under Bun and finds nonodeon PATH, theDEPLOY.NODE_MISSINGfix message now names the range.Changes
engines.nodeset to the range in all 14 manifests that declared one: the three published packages and the 11 private@internal/*packages.scripts/supported-node-range.test.mjs, a new test: every published package declares the range, and no workspace manifest declares a different one.DEPLOY.NODE_MISSINGfix message (packages/0-framework/3-tooling/cli/src/run-alchemy.ts) uses the prose wording, with a test.docs/guides/getting-started.md,docs/guides/deploying.md,docs/design/10-domains/deploy-cli.mdandskills/prisma-composer-core-concepts/SKILL.mduse the prose wording. The skill gains a failure-mode entry:ERR_UNKNOWN_FILE_EXTENSIONon the app's own.tsentry means Node is too old.node-floorjob is now a matrix over 22.18.0, 24.11.0 and 26.0.0. The 22.18 entry keeps the check name "Node 22.18 floor". No required check or job dependency refers to that name.scripts/check-cli-engine-pin-host.test.mjsremoves a symlink withunlinkSyncinstead ofrmSync. On Node 24.11 to 24.13,rmSyncon a symlink to a directory throwsEISDIR, which would have failed the new 24.11 job.Testing performed
pnpm typecheck,pnpm lint,pnpm lint:deps: pass.bun testinpackages/0-framework/3-tooling/cli: pass. The newDEPLOY.NODE_MISSINGtest failed before the message change.node --test scripts/*.test.mjs scripts/*.test.tson Node 24.11.1, 24.16.0 and 26.8.1: pass. The new range test failed before the manifest change.node scripts/check-floor-imports.mjson Node 24.11.1 and 26.8.1: all 17 published entrypoints load.pnpm testinwebsite(renders the guides and checks links): pass.Checklist
git commit -s) per the DCO. The DCO status check will block merge if any commit is missing aSigned-off-by:trailer.feat,fix,chore,docs,refactor,test,build) — PR titles drive the auto-generated release notes.n/aif the change is doc-only / refactor with no behavioural delta).Notes for the reviewer
Left alone on purpose:
.tool-versions(node 24.16.0, the build toolchain, inside the range);pnpm-lock.yamlentries, which record third-party packages' ownengines; the copies of other projects' docs underdocs/design/04-inspirations/; and the npm 10 comments inscripts/check-npm-effect-resolution.mjsandskills-contrib/upgrade-alchemy-effect/SKILL.md, which already match the decision.Alternatives considered:
>=22.18.0. It is the technical floor for type stripping, but it disagrees with create-prisma and admits releases Prisma does not support.engines, and Composer has none today. Not added.Agent: maui-32