Conversation
Node.js 25 dropped the bundled Corepack, so `corepack install --global pnpm@11.20.0` — the first command of every documented setup path — fails outright on a current Node release. The contributor is left with neither pnpm nor a reason, and nothing in the docs says which Node line to use instead. Install the same pinned version with npm, which is present on every supported release, and state the constraint where the prerequisites are listed: Node.js 25 and later are outside the supported range, and `.nvmrc` selects a line that is inside it. The local development guide already told readers not to substitute npm for pnpm, so it now distinguishes installing pnpm from running the workspace with it.
adrian-lorenzo
approved these changes
Sep 15, 2026
adrian-lorenzo
left a comment
Member
There was a problem hiding this comment.
Appreciate the contribution!
3 tasks
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.
Closes #167.
The dead end
Node.js 25 removed the bundled Corepack. The first command of every documented setup path is:
On a current Node release that fails outright, and the contributor is left with neither pnpm nor a reason. Nothing in the docs says which Node line to use instead, so the next reasonable move — "my Node is too new, but the badge says 24 LTS and I have 26 installed" — is a guess.
I hit this while setting up the repository: no
corepackon the machine, and the documented path had no continuation. I got moving withnpx pnpm@11.20.0, which is not what the docs should be teaching.The change
Two parts, because swapping the command alone would leave the real constraint unsaid.
Install the same pinned pnpm with npm, which ships with every supported release, in the five places that documented the Corepack command:
README.md(quick start, and the contributing block)CONTRIBUTING.mdapps/docs/docs/self-host/quickstart.mdapps/docs/docs/self-host/local-development.mdapps/docs/docs/reference/reference-fixture.mdSay the constraint where the prerequisites are listed.
package.jsonalready pins"node": "^22.13.0 || ^24.0.0", so Node 25+ is not a supported runtime here — the docs just never said so, which is why the Corepack failure reads as a broken checkout rather than a wrong Node. Three prose spots now state that Node.js 25 and later are outside the supported range, no longer bundle Corepack, and that.nvmrcselects a supported line.One consequence worth flagging:
local-development.mdalready told readers "Do not substitute npm or yarn", which the new command would appear to contradict. It now distinguishes using npm to install pnpm from using npm to run the workspace.Deliberately unchanged
apps/docs/docs/guides/existing-repo.mdandreference/project-manifest.mdshowsetup: corepack enable && pnpm install --frozen-lockfilein.facility.ymlexamples. Those run inside the runner image, which isnode:24-trixie-slimand does bundle Corepack, so they are correct today.They will not stay correct: Dependabot #209 moves the runner to
node:26-trixie-slim, andcorepack enablein those examples breaks the moment it lands. That is #209's problem to solve, not this PR's, but it is worth knowing before merging it.Verification
pnpm guards—✓ actions-pinned,✓ markdown-links, 0 failed (no link broken by the edits)pnpm --filter @facility/docs test— 10 passed, including the full Docusaurus build and the canonical-URL checkpnpm lint— cleanVerified on the machine that produced the report: Windows 11, Node 26, no Corepack present.
npm install --global pnpm@11.20.0installs the pinned version andpnpm install --frozen-lockfilethen succeeds.Related
#167's sibling #240 (the
enginesrange) already landed —package.jsonnow pins^22.13.0 || ^24.0.0rather than>=22. That tightened the contract without updating the setup instructions it implies, which is the gap this closes. Note that pnpm only warns on an out-of-range Node rather than refusing, so a contributor on 26 gets a working install and an untested toolchain unless the docs say otherwise — now they do.