chore(deps): update pnpm to v12.0.0-rc.8 - #876
Merged
Merged
Conversation
commit: |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## master #876 +/- ##
=======================================
Coverage 94.24% 94.24%
=======================================
Files 10 10
Lines 747 747
Branches 235 235
=======================================
Hits 704 704
Misses 40 40
Partials 3 3 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
fengmk2
approved these changes
Aug 24, 2026
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.
This PR contains the following updates:
12.0.0-rc.7→12.0.0-rc.8Release Notes
pnpm/pnpm (pnpm)
v12.0.0-rc.8: pnpm 12 RC 8Compare Source
Minor Changes
packageImportMethod: autonow tries hardlinks before cloning on Linux. A reflink materializes a new inode and copies extent bookkeeping inside the filesystem's metadata trees, where a hardlink is one directory entry — on btrfs this roughly halves the time an install spends materializingnode_modulesfrom a warm store. ext4 installs are unchanged (cloning was never supported there, soautoalready hardlinked), and macOS keeps clone-first, where APFSclonefileis the platform's cheap primitive. Cloning remains the fallback when the store refuses hardlinks, and remains available explicitly viapackageImportMethod: clone.This ships with pnpm 12 only: pnpm 11's importer deliberately keeps clone-first, since changing what the default materializes on disk is not a point-release change.
Patch Changes
pnpm approve-buildsnow removesonlyBuiltDependencies,onlyBuiltDependenciesFile,neverBuiltDependencies, andignoredBuiltDependenciesfrompnpm-workspace.yamlwhen it writesallowBuilds. Those settings were replaced byallowBuildsin pnpm 11 and silently ignored since, so a workspace migrated from pnpm 10 kept them around looking active.pnpm auditno longer reports a patched version that was never published or is deprecated. The inferred patched range (e.g.>=4.17.24from<=4.17.23) is now checked against the registry packument, and the report is corrected to the lowest non-deprecated published version that satisfies it (e.g.>=4.18.1when4.17.24does not exist and4.18.0is deprecated). When no published version satisfies the range, the report showsPatched versions: None. This also preventspnpm audit --fixfrom adding overrides orminimumReleaseAgeExcludeentries for patches that do not exist #13824.pnpm audit --fixandpnpm audit --fix updateno longer add aminimumReleaseAgeExcludeentry when the registry packument shows that the minimum patched version was never published. Previously such entries were written for versions that do not exist, which would have let a later publish of that version bypass theminimumReleaseAgegate #11563.The
--jsonoutput ofpnpm auditnow returnspatched_versions: nullfor advisories whose inferred patch is not available (never published, skipped, yanked, or deprecated), making it easier for tooling to distinguish "no fix available" from "fix available at version X".Re-fetch full registry metadata when
minimumReleaseAgeis enabled and an abbreviated packument'stimemap omits timestamps for some versions. This prevents mature versions from being filtered out and resolution from falling back to the lowest matching version pnpm/pnpm#13741.A config dependency carrying an inline integrity (the
<version>+<integrity>form, or the object form without atarball) now takes its tarball URL from the registry's packument instead of deriving it from the registry URL, so migrating one costs an extra metadata request. On a registry that serves tarballs from a path pnpm cannot derive, GitLab's group endpoint for one, installing such a config dependency failed with a 404 while the same package installed fine as a regular dependency #13765.Don't treat files like
license16.jsonas a package license when deciding if the workspace LICENSE file should be included in the packed package.Reduced warm update overhead by limiting virtual-store bin linking and ignored-script build bookkeeping to packages materialized by the current install.
pnpm initnow pins the exact pnpm version instead of a^range, and records it in thepackageManagerfield alongsidedevEngines.packageManager. Corepack reads onlypackageManagerand accepts nothing but an exact version, so it rejected the generatedpackage.jsonwith "expected a semver version" pnpm/pnpm#13969. A package created inside an existing workspace is still left unpinned — it follows the pin at the workspace root — and--no-init-package-managerstill scaffolds a manifest without any pin. In pnpm 12,pnpm initalso honorsinitTypeand its--init-typeflag, so the manifest it writes is the same one pnpm 11 writes.node-linker=hoistedinstalls no longer produce broken layouts on graphs with version conflicts. Three hoister fixes, aligning with@yarnpkg/nm(which the TypeScript CLI delegates to):parse-entities@4resolvingcharacter-entities-legacyv1 instead of v3, which crashes withERR_IMPORT_ATTRIBUTE_MISSINGon Node.js 22. Hoist decisions are now made per parent path on decoupled copies (ports upstream'sdecoupleGraphNode).depPathByPkgIdmapping) instead of conflict-nesting a copy under every dependent — on peer-variant-heavy graphs (such asbit's) the old behavior also made the per-path walk explode.usedDependenciesgate).pnpm update --no-save <pkg>@<version>now keeps the manifest's declared importer specifier inpnpm-lock.yamlwhen the requested version satisfies that range, so a subsequent--frozen-lockfileinstall no longer fails because the lockfile records the requested version as the specifier.Reduced registry metadata requests during dependency resolution by reusing cached metadata when lockfile preferences prove that no uncached version can win pnpm/pnpm#13976.
Improved install performance: the store-index writer's shutdown now overlaps the install's final lockfile and
.modules.yamlwrites instead of extending the install's tail.A setting in the global
config.yamlthat pnpm does not read from that file, or that is written in kebab-case instead of camelCase, is now reported instead of being ignored silently.A forced full re-resolution (config changes the fast lockfile update cannot absorb, such as a changed override or
packageExtensions) no longer moves dependencies whose recorded versions still satisfy their ranges. The prior lockfile now pins each still-satisfied edge even when its recorded subtree cannot be reused wholesale, so open ranges like@types/node: "*"keep their locked versions instead of collapsing onto the highest locked version and churning the lockfile.Improved fresh resolution performance when package metadata is already cached.
Improved fresh installs by reusing the store index and verified-files cache during dependency materialization.
A runtime installed through
devEngines.runtimenow matches the host whensupportedArchitectureslists several platforms. Listingos: [darwin, linux]andcpu: [x64, arm64]used to install the runtime built for the first entry of each list, so a machine running Linux on arm64 got a macOS x64 Node.js that could not execute #13898.pnpm self-update <tag>no longer downgrades when the dist-tag points at the pnpm version already running and that version is younger thanminimumReleaseAge. The maturity cutoff moved the tag back to the previous mature release, sopnpm self-update next-12on v12.0.0-rc.4 switched to v12.0.0-rc.3.Improved install performance: large tarballs are now verified and extracted while they download, so the biggest packages — whose downloads finish last — no longer add their whole extraction to the end of the install.
Configuration
📅 Schedule: (UTC)
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.