build: upgrade to pnpm 12 - #1070
Open
lukecotter wants to merge 3 commits into
Open
lukecotter wants to merge 3 commits into
lukecotter wants to merge 3 commits into
Conversation
pnpm 11 reads only registry and auth keys from .npmrc, replaces the build-script settings with one allowBuilds map and defaults strictDepBuilds to true. Every allowBuilds entry is declined: the same set was already ignored under pnpm 10 and every job passed. CI disables verifyDepsBeforeRun, which now defaults to install, so ci:install stays the only install and keeps its --ignore-scripts. pnpm/setup@v2 replaces pnpm/action-setup + actions/setup-node and reads the version from package.json#packageManager.
The lockfile, settings and CI setup carry over from pnpm 11 unchanged.
15 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.
📝 PR Overview
Moves the repo from pnpm 10.34.5 to pnpm 12.4.2.
pnpm 11 is the breaking release: it reads only registry and auth keys from
.npmrc, replaces thefour build-script settings with one
allowBuildsmap, and turns onstrictDepBuilds,minimumReleaseAgeandblockExoticSubdepsby default. pnpm 12 keeps pnpm 11's commands, flagsand lockfile format, and ships as a native binary.
Two commits: the settings move and pnpm 11 first, then the 12 bump on its own, so a CI failure has
one candidate cause.
pnpm-lock.yamlis unchanged through both. No dependency resolves differently.🛠️ Changes made
.npmrckeepsregistryonly.auto-install-peersandshamefully-hoistmove topnpm-workspace.yamlasautoInstallPeersandshamefullyHoist.pnpm-workspace.yamlgainsallowBuildswith ten entries, all declined. The same packages werealready ignored under pnpm 10 and every job passed, so this records today's behaviour and
satisfies
strictDepBuilds.pnpm approve-buildsedits the map.package.jsonpinspackageManager: "pnpm@12.4.2". This is the single source of truth for theversion; Dependabot cannot bump it, so it is raised by hand.
pnpm/action-setup@v6.1.0+actions/setup-node@v7with onepnpm/setup@v2step (
runtime: node@24,cache: true,install: false). It reads the version frompackageManager, so the next bump touches one file instead of five.PNPM_CONFIG_VERIFY_DEPS_BEFORE_RUN: false. That setting now defaults toinstall, which would let a laterpnpm runstart a second install withoutci:install's--ignore-scripts, and apnpm --filter lana …step install the whole workspace. The defaultstays on for local work, where it auto-heals a stale
node_modules.minimumReleaseAgestays at the new 1440 default. It cannot fire in CI, since--frozen-lockfiledoes not resolve, and Dependabot's 7/14-day cooldown always binds first.DEVELOPING.mdandAGENTS.mdrecord the version pin, where settings live now, and theERR_PNPM_IGNORED_BUILDSremedy.🧩 Type of change (check all applicable)
Not a breaking change for the extension. It is a breaking change for a contributor's local setup:
pnpm 12 is required, and
npm i -g pnpm@12is now in the prerequisites.📷 Screenshots / gifs / video [optional]
None — no UI change.
🔗 Related Issues
None.
✅ Tests added?
No product code changed. The acceptance test is that the existing suite and the packaged artefact
come out the same. Run locally on 12.4.2 against a wiped
node_modules:pnpm install— 1,948 packages, all reused from the store, nothing downloaded. NoERR_PNPM_IGNORED_BUILDS, no unrecognised-setting error.pnpm-lock.yaml— byte-identical, still one YAML document atlockfileVersion: '9.0'with nopackageManagerDependencies. Dependabot keeps parsing it, and the pnpm 12 cycle-breaking rewritenever fired.
node_modules/.modules.yaml—publicHoistPattern: ["*"]intact, soshamefullyHoistsurvivedthe move out of
.npmrc, andignoredBuilds: [].pnpm run lint— 0 errors, 12 pre-existingno-consolewarnings.pnpm --filter lana run build:vsix— 26 files, 1021.42 KB, identical to the pnpm 10 baseline byfilename and byte size.
pnpm run build:fast,cd lana-docs && pnpm run build,pnpm run test:e2e:web— all pass.Not covered:
publish.ymlandcd-prerelease.ymlcannot run from a branch. Both were read by handand share the setup block CI exercises; the local vsix build covers their packaging step.
📚 Docs updated?
🧪badge — see RELEASING.md)DEVELOPING.mdandAGENTS.mdare updated. No CHANGELOG entry: build tooling is invisible toextension users. No README or help-site change, and no pre-release-only feature.
Anything else we need to know? [optional]
strictDepBuildscan turn a future Dependabot PR red. The first time a transitive dependencygains an install script,
pnpm installfails withERR_PNPM_IGNORED_BUILDSuntil someone reviewsit and runs
pnpm approve-builds. That is the point of the setting, but it is new.pnpm 12 rejects an X.509 v1 client certificate. Its Rust TLS stack fails at startup with
invalid peer certificate: UnsupportedCertVersionif acertfilein a global.npmrcpoints at av1 cert, before any network call and for every project on the machine. Nothing in this repo is
affected and CI runners are not, but anyone with mTLS client certs in
~/.npmrcwill need theirsreissued as v3.
First CI run is worth watching for two things: that
pnpm/setup@v2putsnodeon PATH forjest, rollup, rolldown, tsx, docusaurus and playwright; and that no job logs a second install after
ci:install, which is what the env var prevents.