fix: update pnpm to v10.22.0
This PR contains the following updates:
| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| pnpm (source) | 10.11.1+sha512.e519b9f7639869dc8d5c3c5dfef73b3f091094b0a006d7317353c72b124e80e1afd429732e28705ad6bfa1ee879c1fce46c128ccebd3192101f43dd67c667912 -> 10.22.0 |
Release Notes
pnpm/pnpm (pnpm)
v10.22.0
v10.21.0
v10.20.0
Minor Changes
- Support
--alloption inpnpm --helpto list all commands #8628.
Patch Changes
- When the
latestversion doesn't satisfy the maturity requirement configured byminimumReleaseAge, pick the highest version that is mature enough, even if it has a different major version #10100. createcommand should not verify patch info.- Set
managePackageManagerVersionstofalse, when switching to a different version of pnpm CLI, in order to avoid subsequent switches #10063.
v10.19.0
Minor Changes
-
You can now allow specific versions of dependencies to run postinstall scripts.
onlyBuiltDependenciesnow accepts package names with lists of trusted versions. For example:onlyBuiltDependencies: - [email protected] || 21.6.5 - [email protected]Related PR: #10104.
-
Added support for exact versions in
minimumReleaseAgeExclude#9985.You can now list one or more specific versions that pnpm should allow to install, even if those versions don’t satisfy the maturity requirement set by
minimumReleaseAge. For example:minimumReleaseAge: 1440 minimumReleaseAgeExclude: - [email protected] - [email protected] || 5.102.1
v10.18.3
Patch Changes
- Fix a bug where pnpm would infinitely recurse when using
verifyDepsBeforeInstall: installand pre/post install scripts that called other pnpm scripts #10060. - Fixed scoped registry keys (e.g.,
@scope:registry) being parsed as property paths inpnpm config getwhen--location=projectis used #9362. - Remove pnpm-specific CLI options before passing to npm publish to prevent "Unknown cli config" warnings #9646.
- Fixed EISDIR error when bin field points to a directory #9441.
- Preserve version and hasBin for variations packages #10022.
- Fixed
pnpm config set --location=projectincorrectly handling keys with slashes (auth tokens, registry settings) #9884. - When both
pnpm-workspace.yamland.npmrcexist,pnpm config set --location=projectnow writes topnpm-workspace.yaml(matching read priority) #10072. - Prevent a table width error in
pnpm outdated --long#10040. - Sync bin links after injected dependencies are updated by build scripts. This ensures that binaries created during build processes are properly linked and accessible to consuming projects #10057.
v10.18.2
Patch Changes
pnpm outdated --longshould work #10040.- Replace ndjson with split2. Reduce the bundle size of pnpm CLI #10054.
pnpm dlxshould request the full metadata of packages, whenminimumReleaseAgeis set #9963.- pnpm version switching should work when the pnpm home directory is in a symlinked directory #9715.
- Fix
EPIPEerrors when piping output to other commands #10027.
v10.18.1
Patch Changes
- Don't print a warning, when
--lockfile-onlyis used #8320. pnpm setupcreates a command shim to the pnpm executable. This is needed to be able to runpnpm self-updateon Windows #5700.- When using pnpm catalogs and running a normal
pnpm install, pnpm produced false positive warnings for "skip adding to the default catalog because it already exists". This warning now only prints when usingpnpm add --save-catalogas originally intended.
v10.18.0
Minor Changes
-
Added network performance monitoring to pnpm by implementing warnings for slow network requests, including both metadata fetches and tarball downloads.
Added configuration options for warning thresholds:
fetchWarnTimeoutMsandfetchMinSpeedKiBps. Warning messages are displayed when requests exceed time thresholds or fall below speed minimumsRelated PR: #10025.
Patch Changes
- Retry filesystem operations on EAGAIN errors #9959.
- Outdated command respects
minimumReleaseAgeconfiguration #10030. - Correctly apply the
cleanupUnusedCatalogsconfiguration when removing dependent packages. - Don't fail with a meaningless error when
scriptShellis set tofalse#8748. pnpm dlxshould not fail whenminimumReleaseAgeis set #10037.
v10.17.1
Patch Changes
- When a version specifier cannot be resolved because the versions don't satisfy the
minimumReleaseAgesetting, print this information out in the error message #9974. - Fix
state.jsoncreation path when executingpnpm patchin a workspace project #9733. - When
minimumReleaseAgeis set and thelatesttag is not mature enough, prefer a non-deprecated version as the newlatest#9987.
v10.17.0
Minor Changes
-
The
minimumReleaseAgeExcludesetting now supports patterns. For instance:minimumReleaseAge: 1440 minimumReleaseAgeExclude: - "@​eslint/*"Related PR: #9984.
Patch Changes
- Don't ignore the
minimumReleaseAgecheck, when the package is requested by exact version and the packument is loaded from cache #9978. - When
minimumReleaseAgeis set and the active version under a dist-tag is not mature enough, do not downgrade to a prerelease version in case the original version wasn't a prerelease one #9979.
v10.16.1
Patch Changes
- The full metadata cache should be stored not at the same location as the abbreviated metadata. This fixes a bug where pnpm was loading the abbreviated metadata from cache and couldn't find the "time" field as a result #9963.
- Forcibly disable ANSI color codes when generating patch diff #9914.
v10.16.0
Minor Changes
-
There have been several incidents recently where popular packages were successfully attacked. To reduce the risk of installing a compromised version, we are introducing a new setting that delays the installation of newly released dependencies. In most cases, such attacks are discovered quickly and the malicious versions are removed from the registry within an hour.
The new setting is called
minimumReleaseAge. It specifies the number of minutes that must pass after a version is published before pnpm will install it. For example, settingminimumReleaseAge: 1440ensures that only packages released at least one day ago can be installed.If you set
minimumReleaseAgebut need to disable this restriction for certain dependencies, you can list them under theminimumReleaseAgeExcludesetting. For instance, with the following configuration pnpm will always install the latest version of webpack, regardless of its release time:minimumReleaseAgeExclude: - webpackRelated issue: #9921.
-
Added support for
finders#9946.In the past,
pnpm listandpnpm whycould only search for dependencies by name (and optionally version). For example:pnpm why minimistprints the chain of dependencies to any installed instance of
minimist:verdaccio 5.20.1 ├─┬ handlebars 4.7.7 │ └── minimist 1.2.8 └─┬ mv 2.1.1 └─┬ mkdirp 0.5.6 └── minimist 1.2.8What if we want to search by other properties of a dependency, not just its name? For instance, find all packages that have
react@17in their peer dependencies?This is now possible with "finder functions". Finder functions can be declared in
.pnpmfile.cjsand invoked with the--find-by=<function name>flag when runningpnpm listorpnpm why.Let's say we want to find any dependencies that have React 17 in peer dependencies. We can add this finder to our
.pnpmfile.cjs:module.exports = { finders: { react17: (ctx) => { return ctx.readManifest().peerDependencies?.react === "^17.0.0"; }, }, };Now we can use this finder function by running:
pnpm why --find-by=react17pnpm will find all dependencies that have this React in peer dependencies and print their exact locations in the dependency graph.
@​apollo/client 4.0.4 ├── @​graphql-typed-document-node/core 3.2.0 └── graphql-tag 2.12.6It is also possible to print out some additional information in the output by returning a string from the finder. For example, with the following finder:
module.exports = { finders: { react17: (ctx) => { const manifest = ctx.readManifest(); if (manifest.peerDependencies?.react === "^17.0.0") { return `license: ${manifest.license}`; } return false; }, }, };Every matched package will also print out the license from its
package.json:@​apollo/client 4.0.4 ├── @​graphql-typed-document-node/core 3.2.0 │ license: MIT └── graphql-tag 2.12.6 license: MIT
Patch Changes
- Fix deprecation warning printed when executing pnpm with Node.js 24 #9529.
- Throw an error if
nodeVersionis not set to an exact semver version #9934. pnpm publishshould be able to publish a.tar.gzfile #9927.- Canceling a running process with Ctrl-C should make
pnpm runreturn a non-zero exit code #9626.
v10.15.1
Patch Changes
- Fix
.pnp.cjscrash when importing subpath #9904. - When resolving peer dependencies, pnpm looks whether the peer dependency is present in the root workspace project's dependencies. This change makes it so that the peer dependency is correctly resolved even from aliased npm-hosted dependencies or other types of dependencies #9913.
v10.15.0
Minor Changes
- Added the
cleanupUnusedCatalogsconfiguration. When set totrue, pnpm will remove unused catalog entries during installation #9793. - Automatically load pnpmfiles from config dependencies that are named
@*/pnpm-plugin-*#9780. pnpm config getnow prints an INI string for an object value #9797.pnpm config getnow accepts property paths (e.g.pnpm config get catalog.react,pnpm config get .catalog.react,pnpm config get 'packageExtensions["@​babel/parser"].peerDependencies["@​babel/types"]'), andpnpm config setnow accepts dot-leading or subscripted keys (e.g.pnpm config set .ignoreScripts true).pnpm config get --jsonnow prints a JSON serialization of config value, andpnpm config set --jsonnow parses the input value as JSON.
Patch Changes
- Semi-breaking. When automatically installing missing peer dependencies, prefer versions that are already present in the direct dependencies of the root workspace package #9835.
- When executing the
pnpm createcommand, must verify whether the node version is supported even if a cache already exists #9775. - When making requests for the non-abbreviated packument, add
*/*to theAcceptheader to avoid getting a 406 error on AWS CodeArtifact #9862. - The standalone exe version of pnpm works with glibc 2.26 again #9734.
- Fix a regression in which
pnpm dlx pkg --helpdoesn't pass--helptopkg#9823.
v10.14.0
Minor Changes
-
Added support for JavaScript runtime resolution
Declare Node.js, Deno, or Bun in
devEngines.runtime(insidepackage.json) and let pnpm download and pin it automatically.Usage example:
{ "devEngines": { "runtime": { "name": "node", "version": "^24.4.0", "onFail": "download" (we only support the "download" value for now) } } }How it works:
pnpm installresolves your specified range to the latest matching runtime version.- The exact version (and checksum) is saved in the lockfile.
- Scripts use the local runtime, ensuring consistency across environments.
Why this is better:
- This new setting supports also Deno and Bun (vs. our Node-only settings
useNodeVersionandexecutionEnv.nodeVersion) - Supports version ranges (not just a fixed version).
- The resolved version is stored in the pnpm lockfile, along with an integrity checksum for future validation of the Node.js content's validity.
- It can be used on any workspace project (like
executionEnv.nodeVersion). So, different projects in a workspace can use different runtimes. - For now
devEngines.runtimesetting will install the runtime locally, which we will improve in future versions of pnpm by using a shared location on the computer.
Related PR: #9755.
-
Add
--cpu,--libc, and--ostopnpm install,pnpm add, andpnpm dlxto customizesupportedArchitecturesvia the CLI #7510.
Patch Changes
- Fix a bug in which
pnpm adddownloads packages whoselibcdiffer frompnpm.supportedArchitectures.libc. - The integrities of the downloaded Node.js artifacts are verified #9750.
- Allow
dlxto parse CLI flags and options between thedlxcommand and the command to run or between thedlxcommand and--#9719. pnpm install --prodshould removing hoisted dev dependencies #9782.- Fix an edge case bug causing local tarballs to not re-link into the virtual store. This bug would happen when changing the contents of the tarball without renaming the file and running a filtered install.
- Fix a bug causing
pnpm installto incorrectly assume the lockfile is up to date after changing a local tarball that has peers dependencies.
v10.13.1
Patch Changes
- Run user defined pnpmfiles after pnpmfiles of plugins.
v10.13.0
Minor Changes
-
Added the possibility to load multiple pnpmfiles. The
pnpmfilesetting can now accept a list of pnpmfile locations #9702. -
pnpm will now automatically load the
pnpmfile.cjsfile from any config dependency named@pnpm/plugin-*orpnpm-plugin-*#9729.The order in which config dependencies are initialized should not matter — they are initialized in alphabetical order. If a specific order is needed, the paths to the
pnpmfile.cjsfiles in the config dependencies can be explicitly listed using thepnpmfilesetting inpnpm-workspace.yaml.
Patch Changes
- When patching dependencies installed via
pkg.pr.new, treat them as Git tarball URLs #9694. - Prevent conflicts between local projects' config and the global config in
dangerouslyAllowAllBuilds,onlyBuiltDependencies,onlyBuiltDependenciesFile, andneverBuiltDependencies#9628. - Sort keys in
pnpm-workspace.yamlwith deep #9701. - The
pnpm rebuildcommand should not add pkgs included inignoredBuiltDependenciestoignoredBuildsinnode_modules/.modules.yaml#9338. - Replaced
shell-quotewithshlexfor quoting command arguments #9381.
v10.12.4
Patch Changes
-
Fix
pnpm licensescommand for local dependencies #9583. -
Fix a bug in which
pnpm ls --filter=not-exist --jsonprints nothing instead of an empty array #9672. -
Fix a deadlock that sometimes happens during peer dependency resolution #9673.
-
Running
pnpm installafterpnpm fetchshould hoist all dependencies that need to be hoisted. Fixes a regression introduced in [v10.12.2] by [#9648]; resolves [#9689].[v10.12.2]: https://github.com/pnpm/pnpm/releases/tag/v10.12.2Add commentMore actions [#9648]: #9648 [#9689]: #9689
v10.12.3
Patch Changes
-
Restore hoisting of optional peer dependencies when installing with an outdated lockfile. Regression introduced in v10.12.2 by #9648; resolves #9685.
v10.12.2
Patch Changes
- Fixed hoisting with
enableGlobalVirtualStoreset totrue#9648. - Fix the
--helpand-hflags not working as expected for thepnpm createcommand. - The dependency package path output by the
pnpm licenses list --jsoncommand is incorrect. - Fix a bug in which
pnpm deployfails due to overridden dependencies having peer dependencies causingERR_PNPM_OUTDATED_LOCKFILE#9595.
v10.12.1
Minor Changes
-
Experimental. Added support for global virtual stores. When enabled,
node_modulescontains only symlinks to a central virtual store, rather tonode_modules/.pnpm. By default, this central store is located at<store-path>/links(you can find the store path by runningpnpm store path).In the central virtual store, each package is hard linked into a directory whose name is the hash of its dependency graph. This allows multiple projects on the system to symlink shared dependencies from this central location, significantly improving installation speed when a warm cache is available.
This is conceptually similar to how NixOS manages packages, using dependency graph hashes to create isolated and reusable package directories.
To enable the global virtual store, set
enableGlobalVirtualStore: truein your rootpnpm-workspace.yaml, or globally via:pnpm config -g set enable-global-virtual-store trueNOTE: In CI environments, where caches are typically cold, this setting may slow down installation. pnpm automatically disables the global virtual store when running in CI.
Related PR: #8190
- The
pnpm updatecommand now supports updatingcatalog:protocol dependencies and writes new specifiers topnpm-workspace.yaml. - Added two new CLI options (
--save-catalogand--save-catalog-name=<name>) topnpm addto save new dependencies as catalog entries.catalog:orcatalog:<name>will be added topackage.jsonand the package specifier will be added to thecatalogsorcatalog[<name>]object inpnpm-workspace.yaml#9425. - Semi-breaking. The keys used for side-effects caches have changed. If you have a side-effects cache generated by a previous version of pnpm, the new version will not use it and will create a new cache instead #9605.
- Added a new setting called
cifor explicitly telling pnpm if the current environment is a CI or not.
Patch Changes
Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 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.
- [ ] If you want to rebase/retry this PR, check this box
This PR was generated by Mend Renovate. View the repository job log.