OPENSUSE-SU-2025-20115-1
Vulnerability from csaf_opensuse - Published: 2025-11-27 12:28 - Updated: 2025-11-27 12:28Summary
Security update for pnpm
Notes
Title of the patch
Security update for pnpm
Description of the patch
This update for pnpm fixes the following issues:
Changes in pnpm:
- update to 10.22.0:
* Minor Changes
- Added support for trustPolicyExclude #10164.
You can now list one or more specific packages or versions
that pnpm should allow to install, even if those packages
don't satisfy the trust policy requirement. For example:
trustPolicy: no-downgrade
trustPolicyExclude:
- chokidar@4.0.3
- webpack@4.47.0 || 5.102.1
- Allow to override the engines field on publish by the
publishConfig.engines field.
* Patch Changes
- Don't crash when two processes of pnpm are hardlinking the
contents of a directory to the same destination
simultaneously #10179.
- update to 10.21.0:
* Minor Changes
- Node.js Runtime Installation for Dependencies. Added support
for automatic Node.js runtime installation for dependencies.
pnpm will now install the Node.js version required by a
dependency if that dependency declares a Node.js runtime in
the "engines" field. For example:
{
"engines": {
"runtime": {
"name": "node",
"version": "^24.11.0",
"onFail": "download"
}
}
}
If the package with the Node.js runtime dependency is a CLI
app, pnpm will bind the CLI app to the required Node.js
version. This ensures that, regardless of the globally
installed Node.js instance, the CLI will use the compatible
version of Node.js.
If the package has a postinstall script, that script will be
executed using the specified Node.js version.
Related PR: #10141
- Added a new setting: trustPolicy.
When set to no-downgrade, pnpm will fail installation if a
package’s trust level has decreased compared to previous
releases — for example, if it was previously published by a
trusted publisher but now only has provenance or no trust
evidence.
This helps prevent installing potentially compromised
versions of a package.
Related issue: #8889.
- Added support for pnpm config get globalconfig to retrieve
the global config file path #9977.
* Patch Changes
- When a user runs pnpm update on a dependency that is not
directly listed in package.json, none of the direct
dependencies should be updated #10155.
- Don't crash when two processes of pnpm are hardlinking the
contents of a directory to the same destination
simultaneously #10160.
- Setting gitBranchLockfile and related settings via
pnpm-workspace.yaml should work #9651.
- update to 10.20.0:
* Minor Changes
- Support --all option in pnpm --help to list all commands
#8628.
* Patch Changes
- When the latest version doesn't satisfy the maturity
requirement configured by minimumReleaseAge, pick the highest
version that is mature enough, even if it has a different
major version #10100.
- create command should not verify patch info.
- Set managePackageManagerVersions to false, when switching to
a different version of pnpm CLI, in order to avoid subsequent
switches #10063.
- update to 10.19.0:
* Minor Changes
- You can now allow specific versions of dependencies to run
postinstall scripts. onlyBuiltDependencies now accepts
package names with lists of trusted versions. For example:
Related PR: #10104.
onlyBuiltDependencies:
- nx@21.6.4 || 21.6.5
- esbuild@0.25.1
- 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:
- nx@21.6.5
- webpack@4.47.0 || 5.102.1
- update to 10.18.3:
* Patch Changes
- Fix a bug where pnpm would infinitely recurse when using
verifyDepsBeforeInstall: install and pre/post install scripts
that called other pnpm scripts #10060.
- Fixed scoped registry keys (e.g., @scope:registry) being
parsed as property paths in pnpm config get when
--location=project is 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=project incorrectly handling
keys with slashes (auth tokens, registry settings) #9884.
- When both pnpm-workspace.yaml and .npmrc exist, pnpm config
set --location=project now writes to pnpm-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.
- update to 10.18.2:
* Patch Changes
- pnpm outdated --long should work #10040.
- Replace ndjson with split2. Reduce the bundle size of pnpm
CLI #10054.
- pnpm dlx should request the full metadata of packages, when
minimumReleaseAge is set #9963.
- pnpm version switching should work when the pnpm home
directory is in a symlinked directory #9715.
- Fix EPIPE errors when piping output to other commands #10027.
- update to 10.18.1:
* Patch Changes
- Don't print a warning, when --lockfile-only is used #8320.
- pnpm setup creates a command shim to the pnpm executable.
This is needed to be able to run pnpm self-update on 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 using pnpm add --save-catalog as originally
intended.
- update to 10.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:
fetchWarnTimeoutMs and fetchMinSpeedKiBps.
Warning messages are displayed when requests exceed time
thresholds or fall below speed minimums
Related PR: #10025.
* Patch Changes
- Retry filesystem operations on EAGAIN errors #9959.
- Outdated command respects minimumReleaseAge configuration
#10030.
- Correctly apply the cleanupUnusedCatalogs configuration when
removing dependent packages.
- Don't fail with a meaningless error when scriptShell is set
to false #8748.
- pnpm dlx should not fail when minimumReleaseAge is set
#10037.
- update to 10.17.1:
* Patch Changes
- When a version specifier cannot be resolved because the versions
don't satisfy the minimumReleaseAge setting, print this
information out in the error message #9974.
- Fix state.json creation path when executing pnpm patch in a
workspace project #9733.
- When minimumReleaseAge is set and the latest tag is not mature
enough, prefer a non-deprecated version as the new latest #9987.
- update to 10.17:
* Minor Changes
- The minimumReleaseAgeExclude setting now supports patterns.
For instance:
minimumReleaseAge: 1440
minimumReleaseAgeExclude:
- "@eslint/*"
* Patch Changes
- Don't ignore the minimumReleaseAge check, when the package is
requested by exact version and the packument is loaded from
cache #9978.
- When minimumReleaseAge is 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.
- update to 10.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.
- update to 10.16:
* 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, setting
minimumReleaseAge: 1440 ensures that only packages released
at least one day ago can be installed.
- If you set minimumReleaseAge but need to disable this
restriction for certain dependencies, you can list them under
the minimumReleaseAgeExclude setting. For instance, with the
following configuration pnpm will always install the latest
version of webpack, regardless of its release time:
minimumReleaseAgeExclude:
- webpack
- Added support for finders #9946.
In the past, pnpm list and pnpm why could only search for
dependencies by name (and optionally version). For example:
pnpm why minimist
prints 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.8
What if we want to search by other properties of a
dependency, not just its name? For instance, find all
packages that have react@17 in their peer dependencies?
This is now possible with "finder functions". Finder
functions can be declared in .pnpmfile.cjs and invoked with
the --find-by=<function name> flag when running pnpm list or
pnpm 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=react17
pnpm 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.6
It 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 nodeVersion is not set to an exact semver
version #9934.
- pnpm publish should be able to publish a .tar.gz file #9927.
- Canceling a running process with Ctrl-C should make pnpm run
return a non-zero exit code #9626.
- update to 10.15.1:
* Patch Changes
- Fix .pnp.cjs crash 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.
- update to 10.15.0:
* Minor Changes
- Added the cleanupUnusedCatalogs configuration. When set to
true, pnpm will remove unused catalog entries during
installation #9793.
- Automatically load pnpmfiles from config dependencies that
are named @*/pnpm-plugin-* #9780.
- pnpm config get now prints an INI string for an object value
#9797.
- pnpm config get now accepts property paths (e.g. pnpm config
get catalog.react, pnpm config get .catalog.react, pnpm
config get
'packageExtensions["@babel/parser"].peerDependencies["@babel/types"]'),
and pnpm config set now accepts dot-leading or subscripted
keys (e.g. pnpm config set .ignoreScripts true).
- pnpm config get --json now prints a JSON serialization of
config value, and pnpm config set --json now 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 create command, 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 the Accept header 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 --help doesn't pass
--help to pkg #9823.
- update to 10.14.0:
* Minor Changes
- Added support for JavaScript runtime installation
(Related PR: #9755.)
Declare Node.js, Deno, or Bun in devEngines.runtime (inside
package.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 install resolves 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 useNodeVersion and
executionEnv.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.runtime setting will install the runtime
locally, which we will improve in future versions of pnpm
by using a shared location on the computer.
- Add --cpu, --libc, and --os to pnpm install, pnpm add, and
pnpm dlx to customize supportedArchitectures via the CLI
#7510.
* Patch Changes
- Fix a bug in which pnpm add downloads packages whose libc
differ from pnpm.supportedArchitectures.libc.
- The integrities of the downloaded Node.js artifacts are
verified #9750.
- Allow dlx to parse CLI flags and options between the dlx
command and the command to run or between the dlx command and
-- #9719.
- pnpm install --prod should 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 install to incorrectly assume the
lockfile is up to date after changing a local tarball that
has peers dependencies.
- update to 10.13.1:
* Patch Changes
- Run user defined pnpmfiles after pnpmfiles of plugins.
- update to 10.13.0:
* Minor Changes
- Added the possibility to load multiple pnpmfiles. The pnpmfile
setting can now accept a list of pnpmfile locations #9702.
- pnpm will now automatically load the pnpmfile.cjs file from any
config dependency named @pnpm/plugin-* or pnpm-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.cjs files in
the config dependencies can be explicitly listed using the
pnpmfile setting in pnpm-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, and neverBuiltDependencies #9628.
- Sort keys in pnpm-workspace.yaml with deep #9701.
- The pnpm rebuild command should not add pkgs included in
ignoredBuiltDependencies to ignoredBuilds in
node_modules/.modules.yaml #9338.
- Replaced shell-quote with shlex for quoting command arguments
#9381.
- update to 10.12.4:
* Patch Changes
- Fix pnpm licenses command for local dependencies #9583.
- Fix a bug in which pnpm ls --filter=not-exist --json prints
nothing instead of an empty array #9672.
- Fix a deadlock that sometimes happens during peer dependency
resolution #9673.
- Running pnpm install after pnpm fetch should hoist all
dependencies that need to be hoisted.
- Fixes a regression introduced in v10.12.2 by #9648; resolves
#9689.
- update to 10.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.
- update to 10.12.2:
* Patch Changes
- Fixed hoisting with enableGlobalVirtualStore set to true #9648.
- Fix the --help and -h flags not working as expected for the pnpm
create command.
- The dependency package path output by the pnpm licenses list
--json command is incorrect.
- Fix a bug in which pnpm deploy fails due to overridden
dependencies having peer dependencies causing
ERR_PNPM_OUTDATED_LOCKFILE #9595.
- update to 10.12.1 (10.2.0 was yanked):
* Minor Changes
- Experimental. Added support for global virtual stores. When
enabled, node_modules contains only symlinks to a central
virtual store, rather to node_modules/.pnpm. By default, this
central store is located at <store-path>/links (you can find
the store path by running pnpm 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: true in your root
pnpm-workspace.yaml, or globally via:
pnpm config -g set enable-global-virtual-store true
NOTE: 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 update command now supports updating catalog:
protocol dependencies and writes new specifiers to
pnpm-workspace.yaml.
- A new catalogMode setting is available for controlling if and
how dependencies are added to the default catalog. It can be
configured to several modes:
- strict: Only allows dependency versions from the catalog.
Adding a dependency outside the catalog's version range
will cause an error.
- prefer: Prefers catalog versions, but will fall back to
direct dependencies if no compatible version is found.
- manual (default): Does not automatically add dependencies
to the catalog.
- Added two new CLI options (--save-catalog and
--save-catalog-name=<name>) to pnpm add to save new
dependencies as catalog entries. catalog: or catalog:<name>
will be added to package.json and the package specifier will
be added to the catalogs or catalog[<name>] object in
pnpm-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 ci for explicitly telling pnpm if
the current environment is a CI or not.
* Patch Changes
- Sort versions printed by pnpm patch using semantic versioning
rules.
- Improve the way the error message displays mismatched
specifiers. Show differences instead of 2 whole objects
#9598.
- Revert #9574 to fix a regression #9596.
- update to 10.11.1:
* Patch Changes
- Fix an issue in which pnpm deploy --legacy creates unexpected
directories when the root package.json has a workspace
package as a peer dependency #9550.
- Dependencies specified via a URL that redirects will only be
locked to the target if it is immutable, fixing a regression
when installing from GitHub releases. (#9531)
- Installation should not exit with an error if
strictPeerDependencies is true but all issues are ignored by
peerDependencyRules #9505.
- Use pnpm_config_ env variables instead of npm_config_ #9571.
- Fix a regression (in v10.9.0) causing the --lockfile-only
flag on pnpm update to produce a different pnpm-lock.yaml
than an update without the flag.
- Let pnpm deploy work in repos with overrides when
inject-workspace-packages=true #9283.
- Fixed the problem of path loss caused by parsing URL address.
Fixes a regression shipped in pnpm v10.11 via #9502.
- pnpm -r --silent run should not print out section #9563.
- update to 10.11.0:
* Minor Changes
- A new setting added for pnpm init to create a package.json
with type=module, when init-type is module. Works as a flag
for the init command too #9463.
- Added support for Nushell to pnpm setup #6476.
- Added two new flags to the pnpm audit command, --ignore and
--ignore-unfixable #8474.
Ignore all vulnerabilities that have no solution:
> pnpm audit --ignore-unfixable
Provide a list of CVE's to ignore those specifically, even if
they have a resolution.
> pnpm audit --ignore=CVE-2021-1234 --ignore=CVE-2021-5678
- Added support for recursively running pack in every project
of a workspace #4351.
Now you can run pnpm -r pack to pack all packages in the
workspace.
* Patch Changes
- pnpm version management should work, when
dangerouslyAllowAllBuilds is set to true #9472.
- pnpm link should work from inside a workspace #9506.
- Set the default workspaceConcurrency to
Math.min(os.availableParallelism(), 4) #9493.
- Installation should not exit with an error if
strictPeerDependencies is true but all issues are ignored by
peerDependencyRules #9505.
- Read updateConfig from pnpm-workspace.yaml #9500.
- Add support for recursive pack
- Remove url.parse usage to fix warning on Node.js 24 #9492.
- pnpm run should be able to run commands from the workspace
root, if ignoreScripts is set tot true #4858.
- update to 10.10.0:
* Allow loading the preResolution, importPackage, and fetchers
hooks from local pnpmfile.
* Fix cd command, when shellEmulator is true #7838.
* Sort keys in pnpm-workspace.yaml #9453.
* Pass the npm_package_json environment variable to the
executed scripts #9452.
* Fixed a mistake in the description of the --reporter=silent
option.
- update to 10.9.0:
* Minor Changes
- Added support for installing JSR packages. You can now
install JSR packages using the following syntax:
add jsr:<pkg_name>
or with a version range:
pnpm add jsr:<pkg_name>@<range>
For example, running:
pnpm add jsr:@foo/bar
will add the following entry to your package.json:
{
"dependencies": {
"@foo/bar": "jsr:^0.1.2"
}
}
When publishing, this entry will be transformed into a format
compatible with npm, older versions of Yarn, and previous
pnpm versions:
{
"dependencies": {
"@foo/bar": "npm:@jsr/foo__bar@^0.1.2"
}
}
Related issue: #8941.
Note: The @jsr scope defaults to https://npm.jsr.io/ if the
@jsr:registry setting is not defined.
- Added a new setting, dangerouslyAllowAllBuilds, for
automatically running any scripts of dependencies without the
need to approve any builds. It was already possible to allow
all builds by adding this to pnpm-workspace.yaml:
neverBuiltDependencies: []
dangerouslyAllowAllBuilds has the same effect but also allows
to be set globally via:
pnpm config set dangerouslyAllowAllBuilds true
It can also be set when running a command:
pnpm install --dangerously-allow-all-builds
* Patch Changes
- Fix a false negative in verifyDepsBeforeRun when nodeLinker
is hoisted and there is a workspace package without
dependencies and node_modules directory #9424.
- Explicitly drop verifyDepsBeforeRun support for nodeLinker:
pnp. Combining verifyDepsBeforeRun and nodeLinker: pnp will
now print a warning.
- udate to 10.8.1:
* Patch Changes
- Removed bright white highlighting, which didn't look good on
some light themes #9389.
- If there is no pnpm related configuration in package.json,
onlyBuiltDependencies will be written to pnpm-workspace.yaml
file #9404.
- The patch file path saved by the pnpm patch-commit and
patch-remove commands should be a relative path #9403.
- update to 10.8:
* Minor Changes
Experimental. A new hook is supported for updating
configuration settings. The hook can be provided via
.pnpmfile.cjs. For example:
module.exports = {
hooks: {
updateConfig: (config) => ({
...config,
nodeLinker: "hoisted",
}),
},
};
Now you can use the pnpm add command with the --config flag
to install new configurational dependencies #9377.
* Patch Changes
- Do not hang indefinitely, when there is a glob that starts
with !/ in pnpm-workspace.yaml. This fixes a regression
introduced by #9169.
- pnpm audit --fix should update the overrides in
pnpm-workspace.yaml.
- pnpm link should update overrides in pnpm-workspace.yaml, not
in package.json #9365.
- update to 10.7.1:
* Patch Changes
- pnpm config set should convert the settings to their correct
type before adding them to pnpm-workspace.yaml #9355.
- pnpm config get should read auth related settings via npm CLI
#9345.
- Replace leading ~/ in a path in .npmrc with the home directory
#9217.
- update to 10.7:
* Minor Changes
- pnpm config get and list also show settings set in
pnpm-workspace.yaml files #9316.
- It should be possible to use env variables in
pnpm-workspace.yaml setting names and value.
- Add an ability to patch dependencies by version ranges. Exact
versions override version ranges, which in turn override
name-only patches. Version range * is the same as name-only,
except that patch application failure will not be ignored.
For example:
patchedDependencies:
foo: patches/foo-1.patch
foo@^2.0.0: patches/foo-2.patch
foo@2.1.0: patches/foo-3.patch
The above configuration would apply patches/foo-3.patch to
foo@2.1.0, patches/foo-2.patch to all foo versions which
satisfy ^2.0.0 except 2.1.0, and patches/foo-1.patch to the
remaining foo versions.
[!WARNING]
The version ranges should not overlap. If you want to
specialize a sub range, make sure to exclude it from the
other keys. For example:
# pnpm-workspace.yaml
patchedDependencies:
# the specialized sub range
'foo@2.2.0-2.8.0': patches/foo.2.2.0-2.8.0.patch
# the more general patch, excluding the sub range above
'foo@>=2.0.0 <2.2.0 || >2.8.0': 'patches/foo.gte2.patch
In most cases, however, it's sufficient to just define an
exact version to override the range.
- pnpm config set --location=project saves the setting to a
pnpm-workspace.yaml file if no .npmrc file is present in the
directory #9316.
- Rename pnpm.allowNonAppliedPatches to
pnpm.allowUnusedPatches. The old name is still supported but
it would print a deprecation warning message.
- Add pnpm.ignorePatchFailures to manage whether pnpm would
ignore patch application failures.
- If ignorePatchFailures is not set, pnpm would throw an
error when patches with exact versions or version ranges
fail to apply, and it would ignore failures from name-only
patches.
- If ignorePatchFailures is explicitly set to false, pnpm
would throw an error when any type of patch fails to apply.
- If ignorePatchFailures is explicitly set to true, pnpm
would print a warning when any type of patch fails to
apply.
* Patch Changes
- Remove dependency paths from audit output to prevent
out-of-memory errors #9280.
- update to 10.6.5:
* Patch Changes
- Remove warnings after having explicitly approved no builds
#9296.
- When installing different dependency packages, should retain
the ignoredBuilds field in the .modules.yaml file #9240.
- Fix usages of the catalog: protocol in injected local
workspace packages. This previously errored with
ERR_PNPM_SPEC_NOT_SUPPORTED_BY_ANY_RESOLVER. #8715
- Setting workspace-concurrency to less than or equal to 0
should work #9297.
- update to 10.6.4:
* Patch Changes
- Fix pnpm dlx with --allow-build flag #9263.
- Invalid Node.js version in use-node-version should not cause
pnpm itself to break #9276.
- The max amount of workers running for linking packages from
the store has been reduced to 4 to achieve optimal results
#9286. The workers are performing many file system
operations, so increasing the number of CPUs doesn't help
performance after some point.
- update to 10.6.3:
* Patch Changes
- pnpm install --prod=false should not crash, when executed in
a project with a pnpm-workspace.yaml file #9233. This fixes
regression introduced via #9211.
- Add the missing node-options config to recursive run #9180.
- Removed a branching code path that only executed when
dedupe-peer-dependents=false. We believe this internal
refactor will not result in behavior changes, but we expect
it to make future pnpm versions behave more consistently for
projects that override dedupe-peer-dependents to false. There
should be less unique bugs from turning off
dedupe-peer-dependents.
See details in #9259.
- update to 10.6.2:
* Patch Changes
- pnpm self-update should always update the version in the
packageManager field of package.json.
- Fix running pnpm CLI from pnpm CLI on Windows when the CLI is
bundled to an executable #8971.
- pnpm patch-commit will now use the same filesystem as the
store directory to compare and create patch files.
- Don't show info output when --loglevel=error is used.
- peerDependencyRules should be set in pnpm-workspace.yaml to
take effect.
- update to 10.6.1:
* Patch Changes
- The pnpm CLI process should not stay hanging, when --silent
reporting is used.
- When --loglevel is set to error, don't show installation
summary, execution time, and big tarball download progress.
- Don't ignore pnpm.patchedDependencies from package.json
#9226.
- When executing the approve-builds command, if package.json
contains onlyBuiltDependencies or ignoredBuiltDependencies,
the selected dependency package will continue to be written
into package.json.
- When a package version cannot be found in the package
metadata, print the registry from which the package was
fetched.
- update to 10.6.0:
* Minor Changes
- pnpm-workspace.yaml can now hold all the settings that .npmrc
accepts. The settings should use camelCase #9211.
pnpm-workspace.yaml example:
verifyDepsBeforeRun: install
optimisticRepeatInstall: true
publicHoistPattern:
- "*types*"
- "!@types/react"
- Projects using a file: dependency on a local tarball file
(i.e. .tgz, .tar.gz, .tar) will see a performance improvement
during installation. Previously, using a file: dependency on
a tarball caused the lockfile resolution step to always run.
The lockfile will now be considered up-to-date if the tarball
is unchanged.
* Patch Changes
- pnpm self-update should not leave a directory with a broken
pnpm installation if the installation fails.
- fast-glob replace with tinyglobby to reduce the size of the
pnpm CLI dependencies #9169.
- pnpm deploy should not remove fields from the deployed
package's package.json file #9215.
- pnpm self-update should not read the pnpm settings from the
package.json file in the current working directory.
- Fix pnpm deploy creating a package.json without the imports
and license field #9193.
- pnpm update -i should list only packages that have newer
versions #9206.
- Fix a bug causing entries in the catalogs section of the
pnpm-lock.yaml file to be removed when
dedupe-peer-dependents=false on a filtered install. #9112
- update to 10.5.2:
* The pnpm config set command should change the global .npmrc
file by default.
This was a regression introduced by #9151 and shipped in pnpm
v10.5.0.
- update to 10.5.1:
* Throw an error message if a pnpm-workspaces.yaml or
pnpm-workspaces.yml file is found instead of a
pnpm-workspace.yaml #9170.
* Fix the update of pnpm-workspace.yaml by the pnpm
approve-builds command #9168.
* Normalize generated link paths in package.json #9163
* Specifying overrides in pnpm-workspace.yaml should work.
* pnpm dlx should ignore settings from the package.json file in
the current working directory #9178.
- update to 10.5.0:
* The pnpm.* settings from package.json can now be specified in
the pnpm-workspace.yaml file instead #9121.
* Added support for automatically syncing files of injected
workspace packages after pnpm run #9081. Use the sync-injected
-deps-after-scripts setting to specify which scripts build
the workspace package. This tells pnpm when syncing is needed.
The setting should be defined in a .npmrc file at the root of
the workspace.
* The packages field in pnpm-workspace.yaml became optional.
* pnpm link with no parameters should work as if --global is
specified #9151
* Allow scope registry CLI option without --config. prefix such
as --@scope:registry=https://scope.example.com/npm #9089
* pnpm link <path> should calculate relative path from the root
of the workspace directory #9132
* Fix a bug causing catalog snapshots to be removed from the
pnpm-lock.yaml file when using --fix-lockfile and --filter. #8639
* Fix a bug causing catalog protocol dependencies to not re-
resolve on a filtered install #8638
- update to 10.4.1:
* Throws an error when the value provided by the --allow-build
option overlaps with the pnpm.ignoredBuildDependencies list #9105.
* Print pnpm's version after the execution time at the end of the console output.
* Print warning about ignored builds of dependencies on repeat install #9106.
* Setting init-package-manager should work.
- includes 10.4.0:
* pnpm approve-builds --global works now for allowing
dependencies of globally installed packages to run
postinstall scripts.
* The pnpm add command now supports a new flag, --allow-build,
which allows building the specified dependencies.
* pnpm approve-builds should work after two consecutive pnpm install runs #9083.
* Fix instruction for updating pnpm with corepack #9101.
* The pnpm version specified by packageManager cannot start with v.
- update to 10.3.0:
* Added a new setting called strict-dep-builds. When enabled,
the installation will exit with a non-zero exit code if any
dependencies have unreviewed build scripts (aka postinstall scripts) #9071.
* Fix a false negative of verify-deps-before-run after pnpm
install --production|--no-optional #9019.
* Print the warning about blocked installation scripts at the
end of the installation output and make it more prominent.
- update to 10.2.1:
* Don't read a package from side-effects cache if it isn't
allowed to be built #9042.
* pnpm approve-builds should work, when executed from a
subdirectory of a workspace #9042.
* pnpm deploy --legacy should work without injected dependencies
* Add information about how to deploy without "injected
dependencies" to the "pnpm deploy" error message.
- includes 10.2.0:
* Packages executed via pnpm dlx and pnpm create are allowed to
be built (run postinstall scripts) by default.
* Quote args for scripts with shell-quote to support new lines
(on POSIX only) #8980.
* Fix a bug in which pnpm deploy fails to read the correct
projectId when the deploy source is the same as the workspace directory #9001.
* Proxy settings should be respected, when resolving Git-hosted
dependencies #6530.
* Prevent overrides from adding invalid version ranges to
peerDependencies by keeping the peerDependencies and
overriding them with prod dependencies #8978.
* Sort the package names in the "pnpm.onlyBuiltDependencies"
list saved by pnpm approve-builds.
- update to 10.1.0:
* Added a new command for printing the list of dependencies
with ignored build scripts: pnpm ignored-builds #8963.
* Added a new command for approving dependencies for running
scripts during installation: pnpm approve-builds #8963.
* Added a new setting called optimistic-repeat-install. When
enabled, a fast check will be performed before proceeding to
installation. This way a repeat install or an install on a
project with everything up-to-date becomes a lot faster. But
some edge cases might arise, so we keep it disabled by
default for now #8977.
* Added a new field "pnpm.ignoredBuiltDependencies" for
explicitly listing packages that should not be built. When a
package is in the list, pnpm will not print an info message
about that package not being built #8935.
* Verify that the package name is valid when executing the
publish command.
* When running pnpm install, the preprepare and postprepare
scripts of the project should be executed #8989.
* Allow workspace: and catalog: to be part of wider version
range in peerDependencies.
* pnpm deploy should inherit the pnpm object from the root
package.json #8991.
* Make sure that the deletion of a node_modules in a sub-
project of a monorepo is detected as out-of-date #8959.
* Fix infinite loop caused by lifecycle scripts using pnpm to
execute other scripts during pnpm install with
verify-deps-before-run=install #8954.
* Replace strip-ansi with the built-in util.
stripVTControlCharacters #9009.
* Do not print patched dependencies as ignored dependencies
that require a build #8952.
- update to 10.0.0:
* Lifecycle scripts of dependencies are not executed during
installation by default! This is a breaking change aimed at
increasing security. In order to allow lifecycle scripts of
specific dependencies, they should be listed in the pnpm
onlyBuiltDependencies field of package.json #8897
* The pnpm link command now adds overrides to the root package.json. #8653
* Secure hashing with SHA256
* Configuration updates
* Changes to the global store
* The # character is now escaped in directory names within
node_modules/.pnpm. #8557
* Running pnpm add --global pnpm or pnpm add --global @pnpm/exe
now fails with an error message, directing you to use pnpm
self-update instead. #8728
* Dependencies added via a URL now record the final resolved
URL in the lockfile, ensuring that any redirects are fully
captured. #8833
* The pnpm deploy command now only works in workspaces that
have inject-workspace-packages=true. This limitation is
introduced to allow us to create a proper lockfile for the
deployed project using the workspace lockfile.
* Removed conversion from lockfile v6 to v9. If you need v6-to-
v9 conversion, use pnpm CLI v9.
* pnpm test now passes all parameters after the test keyword
directly to the underlying script. This matches the behavior
of pnpm run test. Previously you needed to use the -- prefix. #8619
* node-gyp updated to version 11.
* pnpm deploy now tries creating a dedicated lockfile from a
shared lockfile for deployment. It will fallback to
deployment without a lockfile if there is no shared lockfile
or force-legacy-deploy is set to true.
* Added support for a new type of dependencies called
"configurational dependencies". These dependencies are
installed before all the other types of dependencies (befor
"dependencies", "devDependencies", "optionalDependencies").
* New verify-deps-before-run setting. This setting controls how
pnpm checks node_modules before running scripts #8836
* On repeated installs, pnpm performs a quick check to ensure
node_modules is up to date. #8838
* pnpm add integrates with default workspace catalog: #8640
* pnpm dlx now resolves packages to their exact versions and
uses these exact versions for cache keys. This ensures pnpm
dlx always installs the latest requested packages #8811
* No node_modules validation on certain commands. Commands that
should not modify node_modules (e.g., pnpm install --lockfile-
only) no longer validate or purge node_modules. #8657
* for full changes, see https://github.com/pnpm/pnpm/releases/tag/v10.0.0
- update to 9.15.3:
* Fixed the Regex used to find the package manifest during
packing #8938.
* pnpm update --filter <pattern> --latest <pkg> should only
change the specified package for the specified workspace, when
dedupe-peer-dependents is set to true #8877.
* Exclude .DS_Store file at patch-commit #8922.
* Fix a bug in which pnpm patch is unable to bring back old patch
without specifying @version suffix #8919.
- update to 9.15.2:
* Fixed publish/pack error with workspace dependencies with
relative paths #8904. It was broken in v9.4.0 (398472c).
* Use double quotes in the command suggestion by pnpm patch on
Windows #7546.
* Do not fall back to SSH, when resolving a git-hosted package if
git ls-remote works via HTTPS #8906.
* Improve how packages with blocked lifecycle scripts are
reported during installation. Always print the list of ignored
scripts at the end of the output. Include a hint about how to
allow the execution of those packages.
- update to version 9.15.1:
* pnpm remove should not link dependencies from the workspace,
when link-workspace-packages is set to false #7674
* Installation with hoisted node_modules should not fail, when
a dependency has itself in its own peer dependencies #8854
- update to version 9.15.0:
* Metadata directory version bumped to force fresh cache after
we shipped a fix to the metadata write function. This change
is backward compatible as install doesn't require a metadata cache
* pnpm update --global should not crash if there are no any
global packages installed #7898
* Fix an exception when running pnpm update --interactive if
catalogs are used.
- update to version 9.14.4:
* Don't ever save mutated metadata to the metadata cache
- includes 9.14.3:
* Some commands should ignore the packageManager field check of
package.json #7959
- update to version 9.14.2:
pnpm publish --json should work #8788
- includes 9.14.1:
* Added support for pnpm pack --json to print packed tarball
and contents in JSON format #8765
* pnpm exec should print a meaningful error message when no
command is provided #8752
* pnpm setup should remove the CLI from the target location
before moving the new binary #8173
* Fix ERR_PNPM_TARBALL_EXTRACT error while installing a
dependency from GitHub having a slash in branch name #7697
* Don't crash if the use-node-version setting is used and the
system has no Node.js installed #8769
* Convert settings in local .npmrc files to their correct types.
For instance, child-concurrency should be a number, not a string #5075
* pnpm should fail if a project requires a different package
manager even if manage-package-manager-versions is set to true
* pnpm init should respect the --dir option #8768
- includes 9.14.0:
* chore: use verify-deps-before-run
* fix(init): --dir option should be respected (#8768)
* feat: support json format output in pnpm pack (#8765)
* fix: pnpm exec should specify command (#8774)
* fix: proper types of settings in local .npmrc files (#8775)
* fix: ERR_PNPM_TARBALL_EXTRACT when the URL's hash contains a slash
* fix: the CLI should fail if a different package manager is
required by the project
* fix: ETXTBSY error on running setup (#8780)
* feat: add linux-riscv64 build (#8779)
* fix: remove link to X from update notifier (#8773)
* docs: update sponsors
* fix: upgrade cross-sapwn (#8782)
* fix: don't crash when use-node-version is set and there is no node.js
* docs: update changesets
- update to version 9.13.2:
* Detection of circular peer dependencies should not crash with
aliased dependencies #8759. Fixes a regression introduced in
the previous version.
* Fix race condition of symlink creations caused by multiple
parallel dlx processes.
- update to version 9.13.1:
* Fixed some edge cases where resolving circular peer
dependencies caused a dead lock #8720
- update to version 9.13.0:
* The self-update now accepts a version specifier to install a
specific version of pnpm.
* Fix Cannot read properties of undefined (reading 'name') that
is printed while trying to render the missing peer
dependencies warning message #8538
- update to version 9.12.3:
* Don't purge node_modules, when typing "n" in the prompt that
asks whether to remove node_modules before installation #8655
* Fix a bug causing pnpm to infinitely spawn itself when manage-
package-manager-versions=true is set and the .tools directory is corrupt
* Use crypto.hash, when available, for improved performance #8629
* Fixed a race condition in temporary file creation in the
store by including worker thread ID in filename. Previously,
multiple worker threads could attempt to use the same
temporary file. Temporary files now include both process ID
and thread ID for uniqueness #8703
* All commands should read settings from the package.json at
the root of the workspace #8667
* When manage-package-manager-versions is set to true, errors
spawning a self-managed version of pnpm will now be shown
(instead of being silent)
* Pass the find command to npm, it is an alias for npm search
- includes 9.12.2:
* When checking whether a file in the store has executable
permissions, the new approach checks if at least one of the
executable bits (owner, group, and others) is set to 1.
Previously, a file was incorrectly considered executable only
when all the executable bits were set to 1. This fix ensures
that files with any executable permission, regardless of the
user class, are now correctly identified as executable #8546
Patchnames
openSUSE-Leap-16.0-packagehub-31
Terms of use
CSAF 2.0 data is provided by SUSE under the Creative Commons License 4.0 with Attribution (CC-BY-4.0).
{
"document": {
"aggregate_severity": {
"namespace": "https://www.suse.com/support/security/rating/",
"text": "moderate"
},
"category": "csaf_security_advisory",
"csaf_version": "2.0",
"distribution": {
"text": "Copyright 2024 SUSE LLC. All rights reserved.",
"tlp": {
"label": "WHITE",
"url": "https://www.first.org/tlp/"
}
},
"lang": "en",
"notes": [
{
"category": "summary",
"text": "Security update for pnpm",
"title": "Title of the patch"
},
{
"category": "description",
"text": "This update for pnpm fixes the following issues:\n\nChanges in pnpm:\n\n- update to 10.22.0:\n * Minor Changes\n - Added support for trustPolicyExclude #10164.\n You can now list one or more specific packages or versions\n that pnpm should allow to install, even if those packages\n don\u0027t satisfy the trust policy requirement. For example:\n\n trustPolicy: no-downgrade\n trustPolicyExclude:\n - chokidar@4.0.3\n - webpack@4.47.0 || 5.102.1\n\n - Allow to override the engines field on publish by the\n publishConfig.engines field.\n * Patch Changes\n - Don\u0027t crash when two processes of pnpm are hardlinking the\n contents of a directory to the same destination\n simultaneously #10179.\n\n- update to 10.21.0:\n * Minor Changes\n - Node.js Runtime Installation for Dependencies. Added support\n for automatic Node.js runtime installation for dependencies.\n pnpm will now install the Node.js version required by a\n dependency if that dependency declares a Node.js runtime in\n the \"engines\" field. For example:\n\n {\n \"engines\": {\n \"runtime\": {\n \"name\": \"node\",\n \"version\": \"^24.11.0\",\n \"onFail\": \"download\"\n }\n }\n }\n\n If the package with the Node.js runtime dependency is a CLI\n app, pnpm will bind the CLI app to the required Node.js\n version. This ensures that, regardless of the globally\n installed Node.js instance, the CLI will use the compatible\n version of Node.js.\n If the package has a postinstall script, that script will be\n executed using the specified Node.js version.\n Related PR: #10141\n - Added a new setting: trustPolicy.\n When set to no-downgrade, pnpm will fail installation if a\n package\u2019s trust level has decreased compared to previous\n releases \u2014 for example, if it was previously published by a\n trusted publisher but now only has provenance or no trust\n evidence.\n This helps prevent installing potentially compromised\n versions of a package.\n Related issue: #8889.\n - Added support for pnpm config get globalconfig to retrieve\n the global config file path #9977.\n * Patch Changes\n - When a user runs pnpm update on a dependency that is not\n directly listed in package.json, none of the direct\n dependencies should be updated #10155.\n - Don\u0027t crash when two processes of pnpm are hardlinking the\n contents of a directory to the same destination\n simultaneously #10160.\n - Setting gitBranchLockfile and related settings via\n pnpm-workspace.yaml should work #9651.\n\n- update to 10.20.0:\n * Minor Changes\n - Support --all option in pnpm --help to list all commands\n #8628.\n * Patch Changes\n - When the latest version doesn\u0027t satisfy the maturity\n requirement configured by minimumReleaseAge, pick the highest\n version that is mature enough, even if it has a different\n major version #10100.\n - create command should not verify patch info.\n - Set managePackageManagerVersions to false, when switching to\n a different version of pnpm CLI, in order to avoid subsequent\n switches #10063.\n- update to 10.19.0:\n * Minor Changes\n - You can now allow specific versions of dependencies to run\n postinstall scripts. onlyBuiltDependencies now accepts\n package names with lists of trusted versions. For example:\n Related PR: #10104.\n\n onlyBuiltDependencies:\n - nx@21.6.4 || 21.6.5\n - esbuild@0.25.1\n\n - Added support for exact versions in minimumReleaseAgeExclude\n #9985.\n You can now list one or more specific versions that pnpm\n should allow to install, even if those versions don\u2019t satisfy\n the maturity requirement set by minimumReleaseAge. For\n example:\n\n minimumReleaseAge: 1440\n minimumReleaseAgeExclude:\n - nx@21.6.5\n - webpack@4.47.0 || 5.102.1\n\n- update to 10.18.3:\n * Patch Changes\n - Fix a bug where pnpm would infinitely recurse when using\n verifyDepsBeforeInstall: install and pre/post install scripts\n that called other pnpm scripts #10060.\n - Fixed scoped registry keys (e.g., @scope:registry) being\n parsed as property paths in pnpm config get when\n --location=project is used #9362.\n - Remove pnpm-specific CLI options before passing to npm\n publish to prevent \"Unknown cli config\" warnings #9646.\n - Fixed EISDIR error when bin field points to a directory\n #9441.\n - Preserve version and hasBin for variations packages #10022.\n - Fixed pnpm config set --location=project incorrectly handling\n keys with slashes (auth tokens, registry settings) #9884.\n - When both pnpm-workspace.yaml and .npmrc exist, pnpm config\n set --location=project now writes to pnpm-workspace.yaml\n (matching read priority) #10072.\n - Prevent a table width error in pnpm outdated --long #10040.\n - Sync bin links after injected dependencies are updated by\n build scripts. This ensures that binaries created during\n build processes are properly linked and accessible to\n consuming projects #10057.\n- update to 10.18.2:\n * Patch Changes\n - pnpm outdated --long should work #10040.\n - Replace ndjson with split2. Reduce the bundle size of pnpm\n CLI #10054.\n - pnpm dlx should request the full metadata of packages, when\n minimumReleaseAge is set #9963.\n - pnpm version switching should work when the pnpm home\n directory is in a symlinked directory #9715.\n - Fix EPIPE errors when piping output to other commands #10027.\n- update to 10.18.1:\n * Patch Changes\n - Don\u0027t print a warning, when --lockfile-only is used #8320.\n - pnpm setup creates a command shim to the pnpm executable.\n This is needed to be able to run pnpm self-update on Windows\n #5700.\n - When using pnpm catalogs and running a normal pnpm install,\n pnpm produced false positive warnings for \"skip adding to the\n default catalog because it already exists\". This warning now\n only prints when using pnpm add --save-catalog as originally\n intended.\n- update to 10.18.0:\n * Minor Changes\n - Added network performance monitoring to pnpm by implementing\n warnings for slow network requests, including both metadata\n fetches and tarball downloads.\n Added configuration options for warning thresholds:\n fetchWarnTimeoutMs and fetchMinSpeedKiBps.\n Warning messages are displayed when requests exceed time\n thresholds or fall below speed minimums\n Related PR: #10025.\n * Patch Changes\n - Retry filesystem operations on EAGAIN errors #9959.\n - Outdated command respects minimumReleaseAge configuration\n #10030.\n - Correctly apply the cleanupUnusedCatalogs configuration when\n removing dependent packages.\n - Don\u0027t fail with a meaningless error when scriptShell is set\n to false #8748.\n - pnpm dlx should not fail when minimumReleaseAge is set\n #10037.\n\n- update to 10.17.1:\n * Patch Changes\n - When a version specifier cannot be resolved because the versions\n don\u0027t satisfy the minimumReleaseAge setting, print this\n information out in the error message #9974.\n - Fix state.json creation path when executing pnpm patch in a\n workspace project #9733.\n - When minimumReleaseAge is set and the latest tag is not mature\n enough, prefer a non-deprecated version as the new latest #9987.\n\n- update to 10.17:\n * Minor Changes\n - The minimumReleaseAgeExclude setting now supports patterns.\n For instance:\n\n minimumReleaseAge: 1440\n minimumReleaseAgeExclude:\n - \"@eslint/*\"\n\n* Patch Changes\n - Don\u0027t ignore the minimumReleaseAge check, when the package is\n requested by exact version and the packument is loaded from\n cache #9978.\n - When minimumReleaseAge is set and the active version under a\n dist-tag is not mature enough, do not downgrade to a\n prerelease version in case the original version wasn\u0027t a\n prerelease one #9979.\n- update to 10.16.1:\n * Patch Changes\n - The full metadata cache should be stored not at the same\n location as the abbreviated metadata. This fixes a bug where\n pnpm was loading the abbreviated metadata from cache and\n couldn\u0027t find the \"time\" field as a result #9963.\n - Forcibly disable ANSI color codes when generating patch diff\n #9914.\n- update to 10.16:\n * Minor Changes\n - There have been several incidents recently where popular\n packages were successfully attacked. To reduce the risk of\n installing a compromised version, we are introducing a new\n setting that delays the installation of newly released\n dependencies. In most cases, such attacks are discovered\n quickly and the malicious versions are removed from the\n registry within an hour.\n - The new setting is called minimumReleaseAge. It specifies the\n number of minutes that must pass after a version is published\n before pnpm will install it. For example, setting\n minimumReleaseAge: 1440 ensures that only packages released\n at least one day ago can be installed.\n - If you set minimumReleaseAge but need to disable this\n restriction for certain dependencies, you can list them under\n the minimumReleaseAgeExclude setting. For instance, with the\n following configuration pnpm will always install the latest\n version of webpack, regardless of its release time:\n\n minimumReleaseAgeExclude:\n - webpack\n\n - Added support for finders #9946.\n In the past, pnpm list and pnpm why could only search for\n dependencies by name (and optionally version). For example:\n\n pnpm why minimist\n\n prints the chain of dependencies to any installed instance of\n minimist:\n\n verdaccio 5.20.1\n \u251c\u2500\u252c handlebars 4.7.7\n \u2502 \u2514\u2500\u2500 minimist 1.2.8\n \u2514\u2500\u252c mv 2.1.1\n \u2514\u2500\u252c mkdirp 0.5.6\n \u2514\u2500\u2500 minimist 1.2.8\n\n What if we want to search by other properties of a\n dependency, not just its name? For instance, find all\n packages that have react@17 in their peer dependencies?\n This is now possible with \"finder functions\". Finder\n functions can be declared in .pnpmfile.cjs and invoked with\n the --find-by=\u003cfunction name\u003e flag when running pnpm list or\n pnpm why.\n Let\u0027s say we want to find any dependencies that have React 17\n in peer dependencies. We can add this finder to our\n .pnpmfile.cjs:\n\n module.exports = {\n finders: {\n react17: (ctx) =\u003e {\n return ctx.readManifest().peerDependencies?.react === \"^17.0.0\";\n },\n },\n };\n\n Now we can use this finder function by running:\n\n pnpm why --find-by=react17\n\n pnpm will find all dependencies that have this React in peer\n dependencies and print their exact locations in the\n dependency graph.\n\n @apollo/client 4.0.4\n \u251c\u2500\u2500 @graphql-typed-document-node/core 3.2.0\n \u2514\u2500\u2500 graphql-tag 2.12.6\n\n It is also possible to print out some additional information\n in the output by returning a string from the finder. For\n example, with the following finder:\n\n module.exports = {\n finders: {\n react17: (ctx) =\u003e {\n const manifest = ctx.readManifest();\n if (manifest.peerDependencies?.react === \"^17.0.0\") {\n return `license: ${manifest.license}`;\n }\n return false;\n },\n },\n };\n\n Every matched package will also print out the license from\n its package.json:\n\n @apollo/client 4.0.4\n \u251c\u2500\u2500 @graphql-typed-document-node/core 3.2.0\n \u2502 license: MIT\n \u2514\u2500\u2500 graphql-tag 2.12.6\n license: MIT\n\n * Patch Changes\n - Fix deprecation warning printed when executing pnpm with\n Node.js 24 #9529.\n - Throw an error if nodeVersion is not set to an exact semver\n version #9934.\n - pnpm publish should be able to publish a .tar.gz file #9927.\n - Canceling a running process with Ctrl-C should make pnpm run\n return a non-zero exit code #9626.\n- update to 10.15.1:\n * Patch Changes\n - Fix .pnp.cjs crash when importing subpath #9904.\n - When resolving peer dependencies, pnpm looks whether the peer\n dependency is present in the root workspace project\u0027s\n dependencies. This change makes it so that the peer\n dependency is correctly resolved even from aliased npm-hosted\n dependencies or other types of dependencies #9913.\n\n- update to 10.15.0:\n * Minor Changes\n - Added the cleanupUnusedCatalogs configuration. When set to\n true, pnpm will remove unused catalog entries during\n installation #9793.\n - Automatically load pnpmfiles from config dependencies that\n are named @*/pnpm-plugin-* #9780.\n - pnpm config get now prints an INI string for an object value\n #9797.\n - pnpm config get now accepts property paths (e.g. pnpm config\n get catalog.react, pnpm config get .catalog.react, pnpm\n config get\n \u0027packageExtensions[\"@babel/parser\"].peerDependencies[\"@babel/types\"]\u0027),\n and pnpm config set now accepts dot-leading or subscripted\n keys (e.g. pnpm config set .ignoreScripts true).\n - pnpm config get --json now prints a JSON serialization of\n config value, and pnpm config set --json now parses the input\n value as JSON.\n * Patch Changes\n - Semi-breaking. When automatically installing missing peer\n dependencies, prefer versions that are already present in the\n direct dependencies of the root workspace package #9835.\n - When executing the pnpm create command, must verify whether\n the node version is supported even if a cache already exists\n #9775.\n - When making requests for the non-abbreviated packument, add\n */* to the Accept header to avoid getting a 406 error on AWS\n CodeArtifact #9862.\n - The standalone exe version of pnpm works with glibc 2.26\n again #9734.\n - Fix a regression in which pnpm dlx pkg --help doesn\u0027t pass\n --help to pkg #9823.\n\n- update to 10.14.0:\n * Minor Changes\n - Added support for JavaScript runtime installation\n (Related PR: #9755.)\n Declare Node.js, Deno, or Bun in devEngines.runtime (inside\n package.json) and let pnpm download and pin it automatically.\n Usage example:\n\n {\n \"devEngines\": {\n \"runtime\": {\n \"name\": \"node\",\n \"version\": \"^24.4.0\",\n \"onFail\": \"download\" // we only support the \"download\" value for now\n }\n }\n }\n How it works:\n - pnpm install resolves your specified range to the latest\n matching runtime version.\n - The exact version (and checksum) is saved in the lockfile.\n - Scripts use the local runtime, ensuring consistency across\n environments.\n Why this is better:\n - This new setting supports also Deno and Bun (vs. our\n Node-only settings useNodeVersion and\n executionEnv.nodeVersion)\n - Supports version ranges (not just a fixed version).\n - The resolved version is stored in the pnpm lockfile, along\n with an integrity checksum for future validation of the\n Node.js content\u0027s validity.\n - It can be used on any workspace project (like\n executionEnv.nodeVersion). So, different projects in a\n workspace can use different runtimes.\n - For now devEngines.runtime setting will install the runtime\n locally, which we will improve in future versions of pnpm\n by using a shared location on the computer.\n - Add --cpu, --libc, and --os to pnpm install, pnpm add, and\n pnpm dlx to customize supportedArchitectures via the CLI\n #7510.\n * Patch Changes\n - Fix a bug in which pnpm add downloads packages whose libc\n differ from pnpm.supportedArchitectures.libc.\n - The integrities of the downloaded Node.js artifacts are\n verified #9750.\n - Allow dlx to parse CLI flags and options between the dlx\n command and the command to run or between the dlx command and\n -- #9719.\n - pnpm install --prod should removing hoisted dev dependencies\n #9782.\n - Fix an edge case bug causing local tarballs to not re-link\n into the virtual store. This bug would happen when changing\n the contents of the tarball without renaming the file and\n running a filtered install.\n - Fix a bug causing pnpm install to incorrectly assume the\n lockfile is up to date after changing a local tarball that\n has peers dependencies.\n\n- update to 10.13.1:\n * Patch Changes\n - Run user defined pnpmfiles after pnpmfiles of plugins.\n- update to 10.13.0:\n * Minor Changes\n - Added the possibility to load multiple pnpmfiles. The pnpmfile\n setting can now accept a list of pnpmfile locations #9702.\n - pnpm will now automatically load the pnpmfile.cjs file from any\n config dependency named @pnpm/plugin-* or pnpm-plugin-* #9729.\n - The order in which config dependencies are initialized should\n not matter \u2014 they are initialized in alphabetical order. If a\n specific order is needed, the paths to the pnpmfile.cjs files in\n the config dependencies can be explicitly listed using the\n pnpmfile setting in pnpm-workspace.yaml.\n * Patch Changes\n - When patching dependencies installed via pkg.pr.new, treat them\n as Git tarball URLs #9694.\n - Prevent conflicts between local projects\u0027 config and the global\n config in dangerouslyAllowAllBuilds, onlyBuiltDependencies,\n onlyBuiltDependenciesFile, and neverBuiltDependencies #9628.\n - Sort keys in pnpm-workspace.yaml with deep #9701.\n - The pnpm rebuild command should not add pkgs included in\n ignoredBuiltDependencies to ignoredBuilds in\n node_modules/.modules.yaml #9338.\n - Replaced shell-quote with shlex for quoting command arguments\n #9381.\n\n- update to 10.12.4:\n * Patch Changes\n - Fix pnpm licenses command for local dependencies #9583.\n - Fix a bug in which pnpm ls --filter=not-exist --json prints\n nothing instead of an empty array #9672.\n - Fix a deadlock that sometimes happens during peer dependency\n resolution #9673.\n - Running pnpm install after pnpm fetch should hoist all\n dependencies that need to be hoisted.\n - Fixes a regression introduced in v10.12.2 by #9648; resolves\n #9689.\n\n- update to 10.12.3:\n * Patch Changes\n - Restore hoisting of optional peer dependencies when installing\n with an outdated lockfile. Regression introduced in v10.12.2 by\n #9648; resolves #9685.\n\n- update to 10.12.2:\n * Patch Changes\n - Fixed hoisting with enableGlobalVirtualStore set to true #9648.\n - Fix the --help and -h flags not working as expected for the pnpm\n create command.\n - The dependency package path output by the pnpm licenses list\n --json command is incorrect.\n - Fix a bug in which pnpm deploy fails due to overridden\n dependencies having peer dependencies causing\n ERR_PNPM_OUTDATED_LOCKFILE #9595.\n\n- update to 10.12.1 (10.2.0 was yanked):\n * Minor Changes\n - Experimental. Added support for global virtual stores. When\n enabled, node_modules contains only symlinks to a central\n virtual store, rather to node_modules/.pnpm. By default, this\n central store is located at \u003cstore-path\u003e/links (you can find\n the store path by running pnpm store path).\n In the central virtual store, each package is hard linked\n into a directory whose name is the hash of its dependency\n graph. This allows multiple projects on the system to symlink\n shared dependencies from this central location, significantly\n improving installation speed when a warm cache is available.\n This is conceptually similar to how NixOS manages packages,\n using dependency graph hashes to create isolated and\n reusable package directories.\n To enable the global virtual store, set\n enableGlobalVirtualStore: true in your root\n pnpm-workspace.yaml, or globally via:\n pnpm config -g set enable-global-virtual-store true\n NOTE: In CI environments, where caches are typically cold,\n this setting may slow down installation. pnpm automatically\n disables the global virtual store when running in CI.\n Related PR: #8190\n - The pnpm update command now supports updating catalog:\n protocol dependencies and writes new specifiers to\n pnpm-workspace.yaml.\n - A new catalogMode setting is available for controlling if and\n how dependencies are added to the default catalog. It can be\n configured to several modes:\n - strict: Only allows dependency versions from the catalog.\n Adding a dependency outside the catalog\u0027s version range\n will cause an error.\n - prefer: Prefers catalog versions, but will fall back to\n direct dependencies if no compatible version is found.\n - manual (default): Does not automatically add dependencies\n to the catalog.\n - Added two new CLI options (--save-catalog and\n --save-catalog-name=\u003cname\u003e) to pnpm add to save new\n dependencies as catalog entries. catalog: or catalog:\u003cname\u003e\n will be added to package.json and the package specifier will\n be added to the catalogs or catalog[\u003cname\u003e] object in\n pnpm-workspace.yaml #9425.\n - Semi-breaking. The keys used for side-effects caches have\n changed. If you have a side-effects cache generated by a\n previous version of pnpm, the new version will not use it and\n will create a new cache instead #9605.\n - Added a new setting called ci for explicitly telling pnpm if\n the current environment is a CI or not.\n * Patch Changes\n - Sort versions printed by pnpm patch using semantic versioning\n rules.\n - Improve the way the error message displays mismatched\n specifiers. Show differences instead of 2 whole objects\n #9598.\n - Revert #9574 to fix a regression #9596.\n\n- update to 10.11.1:\n * Patch Changes\n - Fix an issue in which pnpm deploy --legacy creates unexpected\n directories when the root package.json has a workspace\n package as a peer dependency #9550.\n - Dependencies specified via a URL that redirects will only be\n locked to the target if it is immutable, fixing a regression\n when installing from GitHub releases. (#9531)\n - Installation should not exit with an error if\n strictPeerDependencies is true but all issues are ignored by\n peerDependencyRules #9505.\n - Use pnpm_config_ env variables instead of npm_config_ #9571.\n - Fix a regression (in v10.9.0) causing the --lockfile-only\n flag on pnpm update to produce a different pnpm-lock.yaml\n than an update without the flag.\n - Let pnpm deploy work in repos with overrides when\n inject-workspace-packages=true #9283.\n - Fixed the problem of path loss caused by parsing URL address.\n Fixes a regression shipped in pnpm v10.11 via #9502.\n - pnpm -r --silent run should not print out section #9563.\n\n- update to 10.11.0:\n * Minor Changes\n - A new setting added for pnpm init to create a package.json\n with type=module, when init-type is module. Works as a flag\n for the init command too #9463.\n - Added support for Nushell to pnpm setup #6476.\n - Added two new flags to the pnpm audit command, --ignore and\n --ignore-unfixable #8474.\n Ignore all vulnerabilities that have no solution:\n \u003e pnpm audit --ignore-unfixable\n Provide a list of CVE\u0027s to ignore those specifically, even if\n they have a resolution.\n \u003e pnpm audit --ignore=CVE-2021-1234 --ignore=CVE-2021-5678\n - Added support for recursively running pack in every project\n of a workspace #4351.\n Now you can run pnpm -r pack to pack all packages in the\n workspace.\n * Patch Changes\n - pnpm version management should work, when\n dangerouslyAllowAllBuilds is set to true #9472.\n - pnpm link should work from inside a workspace #9506.\n - Set the default workspaceConcurrency to\n Math.min(os.availableParallelism(), 4) #9493.\n - Installation should not exit with an error if\n strictPeerDependencies is true but all issues are ignored by\n peerDependencyRules #9505.\n - Read updateConfig from pnpm-workspace.yaml #9500.\n - Add support for recursive pack\n - Remove url.parse usage to fix warning on Node.js 24 #9492.\n - pnpm run should be able to run commands from the workspace\n root, if ignoreScripts is set tot true #4858.\n\n- update to 10.10.0:\n * Allow loading the preResolution, importPackage, and fetchers\n hooks from local pnpmfile.\n * Fix cd command, when shellEmulator is true #7838.\n * Sort keys in pnpm-workspace.yaml #9453.\n * Pass the npm_package_json environment variable to the\n executed scripts #9452.\n * Fixed a mistake in the description of the --reporter=silent\n option.\n\n- update to 10.9.0:\n * Minor Changes\n - Added support for installing JSR packages. You can now\n install JSR packages using the following syntax:\n add jsr:\u003cpkg_name\u003e\n or with a version range:\n pnpm add jsr:\u003cpkg_name\u003e@\u003crange\u003e\n For example, running:\n pnpm add jsr:@foo/bar\n will add the following entry to your package.json:\n {\n \"dependencies\": {\n \"@foo/bar\": \"jsr:^0.1.2\"\n }\n }\n When publishing, this entry will be transformed into a format\n compatible with npm, older versions of Yarn, and previous\n pnpm versions:\n {\n \"dependencies\": {\n \"@foo/bar\": \"npm:@jsr/foo__bar@^0.1.2\"\n }\n }\n Related issue: #8941.\n Note: The @jsr scope defaults to https://npm.jsr.io/ if the\n @jsr:registry setting is not defined.\n - Added a new setting, dangerouslyAllowAllBuilds, for\n automatically running any scripts of dependencies without the\n need to approve any builds. It was already possible to allow\n all builds by adding this to pnpm-workspace.yaml:\n neverBuiltDependencies: []\n dangerouslyAllowAllBuilds has the same effect but also allows\n to be set globally via:\n pnpm config set dangerouslyAllowAllBuilds true\n It can also be set when running a command:\n pnpm install --dangerously-allow-all-builds\n * Patch Changes\n - Fix a false negative in verifyDepsBeforeRun when nodeLinker\n is hoisted and there is a workspace package without\n dependencies and node_modules directory #9424.\n - Explicitly drop verifyDepsBeforeRun support for nodeLinker:\n pnp. Combining verifyDepsBeforeRun and nodeLinker: pnp will\n now print a warning.\n\n- udate to 10.8.1:\n * Patch Changes\n - Removed bright white highlighting, which didn\u0027t look good on\n some light themes #9389.\n - If there is no pnpm related configuration in package.json,\n onlyBuiltDependencies will be written to pnpm-workspace.yaml\n file #9404.\n - The patch file path saved by the pnpm patch-commit and\n patch-remove commands should be a relative path #9403.\n\n- update to 10.8:\n * Minor Changes\n Experimental. A new hook is supported for updating\n configuration settings. The hook can be provided via\n .pnpmfile.cjs. For example:\n\n module.exports = {\n hooks: {\n updateConfig: (config) =\u003e ({\n ...config,\n nodeLinker: \"hoisted\",\n }),\n },\n };\n\n Now you can use the pnpm add command with the --config flag\n to install new configurational dependencies #9377.\n * Patch Changes\n - Do not hang indefinitely, when there is a glob that starts\n with !/ in pnpm-workspace.yaml. This fixes a regression\n introduced by #9169.\n - pnpm audit --fix should update the overrides in\n pnpm-workspace.yaml.\n - pnpm link should update overrides in pnpm-workspace.yaml, not\n in package.json #9365.\n\n- update to 10.7.1:\n * Patch Changes\n - pnpm config set should convert the settings to their correct\n type before adding them to pnpm-workspace.yaml #9355.\n - pnpm config get should read auth related settings via npm CLI\n #9345.\n - Replace leading ~/ in a path in .npmrc with the home directory\n #9217.\n\n- update to 10.7:\n * Minor Changes\n - pnpm config get and list also show settings set in\n pnpm-workspace.yaml files #9316.\n - It should be possible to use env variables in\n pnpm-workspace.yaml setting names and value.\n - Add an ability to patch dependencies by version ranges. Exact\n versions override version ranges, which in turn override\n name-only patches. Version range * is the same as name-only,\n except that patch application failure will not be ignored.\n For example:\n\n patchedDependencies:\n foo: patches/foo-1.patch\n foo@^2.0.0: patches/foo-2.patch\n foo@2.1.0: patches/foo-3.patch\n\n The above configuration would apply patches/foo-3.patch to\n foo@2.1.0, patches/foo-2.patch to all foo versions which\n satisfy ^2.0.0 except 2.1.0, and patches/foo-1.patch to the\n remaining foo versions.\n [!WARNING]\n The version ranges should not overlap. If you want to\n specialize a sub range, make sure to exclude it from the\n other keys. For example:\n\n # pnpm-workspace.yaml\n patchedDependencies:\n # the specialized sub range\n \u0027foo@2.2.0-2.8.0\u0027: patches/foo.2.2.0-2.8.0.patch\n # the more general patch, excluding the sub range above\n \u0027foo@\u003e=2.0.0 \u003c2.2.0 || \u003e2.8.0\u0027: \u0027patches/foo.gte2.patch\n\n In most cases, however, it\u0027s sufficient to just define an\n exact version to override the range.\n - pnpm config set --location=project saves the setting to a\n pnpm-workspace.yaml file if no .npmrc file is present in the\n directory #9316.\n - Rename pnpm.allowNonAppliedPatches to\n pnpm.allowUnusedPatches. The old name is still supported but\n it would print a deprecation warning message.\n - Add pnpm.ignorePatchFailures to manage whether pnpm would\n ignore patch application failures.\n - If ignorePatchFailures is not set, pnpm would throw an\n error when patches with exact versions or version ranges\n fail to apply, and it would ignore failures from name-only\n patches.\n - If ignorePatchFailures is explicitly set to false, pnpm\n would throw an error when any type of patch fails to apply.\n - If ignorePatchFailures is explicitly set to true, pnpm\n would print a warning when any type of patch fails to\n apply.\n * Patch Changes\n - Remove dependency paths from audit output to prevent\n out-of-memory errors #9280.\n\n- update to 10.6.5:\n * Patch Changes\n - Remove warnings after having explicitly approved no builds\n #9296.\n - When installing different dependency packages, should retain\n the ignoredBuilds field in the .modules.yaml file #9240.\n - Fix usages of the catalog: protocol in injected local\n workspace packages. This previously errored with\n ERR_PNPM_SPEC_NOT_SUPPORTED_BY_ANY_RESOLVER. #8715\n - Setting workspace-concurrency to less than or equal to 0\n should work #9297.\n\n- update to 10.6.4:\n * Patch Changes\n - Fix pnpm dlx with --allow-build flag #9263.\n - Invalid Node.js version in use-node-version should not cause\n pnpm itself to break #9276.\n - The max amount of workers running for linking packages from\n the store has been reduced to 4 to achieve optimal results\n #9286. The workers are performing many file system\n operations, so increasing the number of CPUs doesn\u0027t help\n performance after some point.\n\n- update to 10.6.3:\n * Patch Changes\n - pnpm install --prod=false should not crash, when executed in\n a project with a pnpm-workspace.yaml file #9233. This fixes\n regression introduced via #9211.\n - Add the missing node-options config to recursive run #9180.\n - Removed a branching code path that only executed when\n dedupe-peer-dependents=false. We believe this internal\n refactor will not result in behavior changes, but we expect\n it to make future pnpm versions behave more consistently for\n projects that override dedupe-peer-dependents to false. There\n should be less unique bugs from turning off\n dedupe-peer-dependents.\n See details in #9259.\n\n- update to 10.6.2:\n * Patch Changes\n - pnpm self-update should always update the version in the\n packageManager field of package.json.\n - Fix running pnpm CLI from pnpm CLI on Windows when the CLI is\n bundled to an executable #8971.\n - pnpm patch-commit will now use the same filesystem as the\n store directory to compare and create patch files.\n - Don\u0027t show info output when --loglevel=error is used.\n - peerDependencyRules should be set in pnpm-workspace.yaml to\n take effect.\n\n- update to 10.6.1:\n * Patch Changes\n - The pnpm CLI process should not stay hanging, when --silent\n reporting is used.\n - When --loglevel is set to error, don\u0027t show installation\n summary, execution time, and big tarball download progress.\n - Don\u0027t ignore pnpm.patchedDependencies from package.json\n #9226.\n - When executing the approve-builds command, if package.json\n contains onlyBuiltDependencies or ignoredBuiltDependencies,\n the selected dependency package will continue to be written\n into package.json.\n - When a package version cannot be found in the package\n metadata, print the registry from which the package was\n fetched.\n\n- update to 10.6.0:\n * Minor Changes\n - pnpm-workspace.yaml can now hold all the settings that .npmrc\n accepts. The settings should use camelCase #9211.\n pnpm-workspace.yaml example:\n\n verifyDepsBeforeRun: install\n optimisticRepeatInstall: true\n publicHoistPattern:\n - \"*types*\"\n - \"!@types/react\"\n\n - Projects using a file: dependency on a local tarball file\n (i.e. .tgz, .tar.gz, .tar) will see a performance improvement\n during installation. Previously, using a file: dependency on\n a tarball caused the lockfile resolution step to always run.\n The lockfile will now be considered up-to-date if the tarball\n is unchanged.\n * Patch Changes\n - pnpm self-update should not leave a directory with a broken\n pnpm installation if the installation fails.\n - fast-glob replace with tinyglobby to reduce the size of the\n pnpm CLI dependencies #9169.\n - pnpm deploy should not remove fields from the deployed\n package\u0027s package.json file #9215.\n - pnpm self-update should not read the pnpm settings from the\n package.json file in the current working directory.\n - Fix pnpm deploy creating a package.json without the imports\n and license field #9193.\n - pnpm update -i should list only packages that have newer\n versions #9206.\n - Fix a bug causing entries in the catalogs section of the\n pnpm-lock.yaml file to be removed when\n dedupe-peer-dependents=false on a filtered install. #9112\n\n- update to 10.5.2:\n * The pnpm config set command should change the global .npmrc\n file by default.\n This was a regression introduced by #9151 and shipped in pnpm\n v10.5.0.\n\n- update to 10.5.1:\n * Throw an error message if a pnpm-workspaces.yaml or\n pnpm-workspaces.yml file is found instead of a\n pnpm-workspace.yaml #9170.\n * Fix the update of pnpm-workspace.yaml by the pnpm\n approve-builds command #9168.\n * Normalize generated link paths in package.json #9163\n * Specifying overrides in pnpm-workspace.yaml should work.\n * pnpm dlx should ignore settings from the package.json file in\n the current working directory #9178.\n\n- update to 10.5.0:\n * The pnpm.* settings from package.json can now be specified in\n the pnpm-workspace.yaml file instead #9121.\n * Added support for automatically syncing files of injected\n workspace packages after pnpm run #9081. Use the sync-injected\n -deps-after-scripts setting to specify which scripts build\n the workspace package. This tells pnpm when syncing is needed.\n The setting should be defined in a .npmrc file at the root of\n the workspace.\n * The packages field in pnpm-workspace.yaml became optional.\n * pnpm link with no parameters should work as if --global is\n specified #9151\n * Allow scope registry CLI option without --config. prefix such\n as --@scope:registry=https://scope.example.com/npm #9089\n * pnpm link \u003cpath\u003e should calculate relative path from the root\n of the workspace directory #9132\n * Fix a bug causing catalog snapshots to be removed from the\n pnpm-lock.yaml file when using --fix-lockfile and --filter. #8639\n * Fix a bug causing catalog protocol dependencies to not re-\n resolve on a filtered install #8638\n\n- update to 10.4.1:\n * Throws an error when the value provided by the --allow-build\n option overlaps with the pnpm.ignoredBuildDependencies list #9105.\n * Print pnpm\u0027s version after the execution time at the end of the console output.\n * Print warning about ignored builds of dependencies on repeat install #9106.\n * Setting init-package-manager should work.\n- includes 10.4.0:\n * pnpm approve-builds --global works now for allowing\n dependencies of globally installed packages to run\n postinstall scripts.\n * The pnpm add command now supports a new flag, --allow-build,\n which allows building the specified dependencies.\n * pnpm approve-builds should work after two consecutive pnpm install runs #9083.\n * Fix instruction for updating pnpm with corepack #9101.\n * The pnpm version specified by packageManager cannot start with v.\n\n- update to 10.3.0:\n * Added a new setting called strict-dep-builds. When enabled,\n the installation will exit with a non-zero exit code if any\n dependencies have unreviewed build scripts (aka postinstall scripts) #9071.\n * Fix a false negative of verify-deps-before-run after pnpm\n install --production|--no-optional #9019.\n * Print the warning about blocked installation scripts at the\n end of the installation output and make it more prominent.\n\n- update to 10.2.1:\n * Don\u0027t read a package from side-effects cache if it isn\u0027t\n allowed to be built #9042.\n * pnpm approve-builds should work, when executed from a\n subdirectory of a workspace #9042.\n * pnpm deploy --legacy should work without injected dependencies\n * Add information about how to deploy without \"injected\n dependencies\" to the \"pnpm deploy\" error message.\n- includes 10.2.0:\n * Packages executed via pnpm dlx and pnpm create are allowed to\n be built (run postinstall scripts) by default.\n * Quote args for scripts with shell-quote to support new lines\n (on POSIX only) #8980.\n * Fix a bug in which pnpm deploy fails to read the correct\n projectId when the deploy source is the same as the workspace directory #9001.\n * Proxy settings should be respected, when resolving Git-hosted\n dependencies #6530.\n * Prevent overrides from adding invalid version ranges to\n peerDependencies by keeping the peerDependencies and\n overriding them with prod dependencies #8978.\n * Sort the package names in the \"pnpm.onlyBuiltDependencies\"\n list saved by pnpm approve-builds.\n\n- update to 10.1.0:\n * Added a new command for printing the list of dependencies\n with ignored build scripts: pnpm ignored-builds #8963.\n * Added a new command for approving dependencies for running\n scripts during installation: pnpm approve-builds #8963.\n * Added a new setting called optimistic-repeat-install. When\n enabled, a fast check will be performed before proceeding to\n installation. This way a repeat install or an install on a\n project with everything up-to-date becomes a lot faster. But\n some edge cases might arise, so we keep it disabled by\n default for now #8977.\n * Added a new field \"pnpm.ignoredBuiltDependencies\" for\n explicitly listing packages that should not be built. When a\n package is in the list, pnpm will not print an info message\n about that package not being built #8935.\n * Verify that the package name is valid when executing the\n publish command.\n * When running pnpm install, the preprepare and postprepare\n scripts of the project should be executed #8989.\n * Allow workspace: and catalog: to be part of wider version\n range in peerDependencies.\n * pnpm deploy should inherit the pnpm object from the root\n package.json #8991.\n * Make sure that the deletion of a node_modules in a sub-\n project of a monorepo is detected as out-of-date #8959.\n * Fix infinite loop caused by lifecycle scripts using pnpm to\n execute other scripts during pnpm install with\n verify-deps-before-run=install #8954.\n * Replace strip-ansi with the built-in util.\n stripVTControlCharacters #9009.\n * Do not print patched dependencies as ignored dependencies\n that require a build #8952.\n\n- update to 10.0.0:\n * Lifecycle scripts of dependencies are not executed during\n installation by default! This is a breaking change aimed at\n increasing security. In order to allow lifecycle scripts of\n specific dependencies, they should be listed in the pnpm\n onlyBuiltDependencies field of package.json #8897\n * The pnpm link command now adds overrides to the root package.json. #8653\n * Secure hashing with SHA256\n * Configuration updates\n * Changes to the global store\n * The # character is now escaped in directory names within\n node_modules/.pnpm. #8557\n * Running pnpm add --global pnpm or pnpm add --global @pnpm/exe\n now fails with an error message, directing you to use pnpm\n self-update instead. #8728\n * Dependencies added via a URL now record the final resolved\n URL in the lockfile, ensuring that any redirects are fully\n captured. #8833\n * The pnpm deploy command now only works in workspaces that\n have inject-workspace-packages=true. This limitation is\n introduced to allow us to create a proper lockfile for the\n deployed project using the workspace lockfile.\n * Removed conversion from lockfile v6 to v9. If you need v6-to-\n v9 conversion, use pnpm CLI v9.\n * pnpm test now passes all parameters after the test keyword\n directly to the underlying script. This matches the behavior\n of pnpm run test. Previously you needed to use the -- prefix. #8619\n * node-gyp updated to version 11.\n * pnpm deploy now tries creating a dedicated lockfile from a\n shared lockfile for deployment. It will fallback to\n deployment without a lockfile if there is no shared lockfile\n or force-legacy-deploy is set to true.\n * Added support for a new type of dependencies called\n \"configurational dependencies\". These dependencies are\n installed before all the other types of dependencies (befor\n \"dependencies\", \"devDependencies\", \"optionalDependencies\").\n * New verify-deps-before-run setting. This setting controls how\n pnpm checks node_modules before running scripts #8836\n * On repeated installs, pnpm performs a quick check to ensure\n node_modules is up to date. #8838\n * pnpm add integrates with default workspace catalog: #8640\n * pnpm dlx now resolves packages to their exact versions and\n uses these exact versions for cache keys. This ensures pnpm\n dlx always installs the latest requested packages #8811\n * No node_modules validation on certain commands. Commands that\n should not modify node_modules (e.g., pnpm install --lockfile-\n only) no longer validate or purge node_modules. #8657\n * for full changes, see https://github.com/pnpm/pnpm/releases/tag/v10.0.0\n\n- update to 9.15.3:\n * Fixed the Regex used to find the package manifest during\n packing #8938.\n * pnpm update --filter \u003cpattern\u003e --latest \u003cpkg\u003e should only\n change the specified package for the specified workspace, when\n dedupe-peer-dependents is set to true #8877.\n * Exclude .DS_Store file at patch-commit #8922.\n * Fix a bug in which pnpm patch is unable to bring back old patch\n without specifying @version suffix #8919.\n\n- update to 9.15.2:\n * Fixed publish/pack error with workspace dependencies with\n relative paths #8904. It was broken in v9.4.0 (398472c).\n * Use double quotes in the command suggestion by pnpm patch on\n Windows #7546.\n * Do not fall back to SSH, when resolving a git-hosted package if\n git ls-remote works via HTTPS #8906.\n * Improve how packages with blocked lifecycle scripts are\n reported during installation. Always print the list of ignored\n scripts at the end of the output. Include a hint about how to\n allow the execution of those packages.\n\n- update to version 9.15.1:\n * pnpm remove should not link dependencies from the workspace,\n when link-workspace-packages is set to false #7674\n * Installation with hoisted node_modules should not fail, when\n a dependency has itself in its own peer dependencies #8854\n\n- update to version 9.15.0:\n * Metadata directory version bumped to force fresh cache after\n we shipped a fix to the metadata write function. This change\n is backward compatible as install doesn\u0027t require a metadata cache\n * pnpm update --global should not crash if there are no any\n global packages installed #7898\n * Fix an exception when running pnpm update --interactive if\n catalogs are used.\n\n- update to version 9.14.4:\n * Don\u0027t ever save mutated metadata to the metadata cache\n- includes 9.14.3:\n * Some commands should ignore the packageManager field check of\n package.json #7959\n\n- update to version 9.14.2:\n pnpm publish --json should work #8788\n- includes 9.14.1:\n * Added support for pnpm pack --json to print packed tarball\n and contents in JSON format #8765\n * pnpm exec should print a meaningful error message when no\n command is provided #8752\n * pnpm setup should remove the CLI from the target location\n before moving the new binary #8173\n * Fix ERR_PNPM_TARBALL_EXTRACT error while installing a\n dependency from GitHub having a slash in branch name #7697\n * Don\u0027t crash if the use-node-version setting is used and the\n system has no Node.js installed #8769\n * Convert settings in local .npmrc files to their correct types.\n For instance, child-concurrency should be a number, not a string #5075\n * pnpm should fail if a project requires a different package\n manager even if manage-package-manager-versions is set to true\n * pnpm init should respect the --dir option #8768\n- includes 9.14.0:\n * chore: use verify-deps-before-run\n * fix(init): --dir option should be respected (#8768)\n * feat: support json format output in pnpm pack (#8765)\n * fix: pnpm exec should specify command (#8774)\n * fix: proper types of settings in local .npmrc files (#8775)\n * fix: ERR_PNPM_TARBALL_EXTRACT when the URL\u0027s hash contains a slash\n * fix: the CLI should fail if a different package manager is\n required by the project\n * fix: ETXTBSY error on running setup (#8780)\n * feat: add linux-riscv64 build (#8779)\n * fix: remove link to X from update notifier (#8773)\n * docs: update sponsors\n * fix: upgrade cross-sapwn (#8782)\n * fix: don\u0027t crash when use-node-version is set and there is no node.js\n * docs: update changesets\n\n- update to version 9.13.2:\n * Detection of circular peer dependencies should not crash with\n aliased dependencies #8759. Fixes a regression introduced in\n the previous version.\n * Fix race condition of symlink creations caused by multiple\n parallel dlx processes.\n\n- update to version 9.13.1:\n * Fixed some edge cases where resolving circular peer\n dependencies caused a dead lock #8720\n\n- update to version 9.13.0:\n * The self-update now accepts a version specifier to install a\n specific version of pnpm.\n * Fix Cannot read properties of undefined (reading \u0027name\u0027) that\n is printed while trying to render the missing peer\n dependencies warning message #8538\n\n- update to version 9.12.3:\n * Don\u0027t purge node_modules, when typing \"n\" in the prompt that\n asks whether to remove node_modules before installation #8655\n * Fix a bug causing pnpm to infinitely spawn itself when manage-\n package-manager-versions=true is set and the .tools directory is corrupt\n * Use crypto.hash, when available, for improved performance #8629\n * Fixed a race condition in temporary file creation in the\n store by including worker thread ID in filename. Previously,\n multiple worker threads could attempt to use the same\n temporary file. Temporary files now include both process ID\n and thread ID for uniqueness #8703\n * All commands should read settings from the package.json at\n the root of the workspace #8667\n * When manage-package-manager-versions is set to true, errors\n spawning a self-managed version of pnpm will now be shown\n (instead of being silent)\n * Pass the find command to npm, it is an alias for npm search\n- includes 9.12.2:\n * When checking whether a file in the store has executable\n permissions, the new approach checks if at least one of the\n executable bits (owner, group, and others) is set to 1.\n Previously, a file was incorrectly considered executable only\n when all the executable bits were set to 1. This fix ensures\n that files with any executable permission, regardless of the\n user class, are now correctly identified as executable #8546\n\n",
"title": "Description of the patch"
},
{
"category": "details",
"text": "openSUSE-Leap-16.0-packagehub-31",
"title": "Patchnames"
},
{
"category": "legal_disclaimer",
"text": "CSAF 2.0 data is provided by SUSE under the Creative Commons License 4.0 with Attribution (CC-BY-4.0).",
"title": "Terms of use"
}
],
"publisher": {
"category": "vendor",
"contact_details": "https://www.suse.com/support/security/contact/",
"name": "SUSE Product Security Team",
"namespace": "https://www.suse.com/"
},
"references": [
{
"category": "external",
"summary": "SUSE ratings",
"url": "https://www.suse.com/support/security/rating/"
},
{
"category": "self",
"summary": "URL of this CSAF notice",
"url": "https://ftp.suse.com/pub/projects/security/csaf/opensuse-su-2025-20115-1.json"
},
{
"category": "self",
"summary": "SUSE CVE CVE-2021-1234 page",
"url": "https://www.suse.com/security/cve/CVE-2021-1234/"
},
{
"category": "self",
"summary": "SUSE CVE CVE-2021-5678 page",
"url": "https://www.suse.com/security/cve/CVE-2021-5678/"
}
],
"title": "Security update for pnpm",
"tracking": {
"current_release_date": "2025-11-27T12:28:46Z",
"generator": {
"date": "2025-11-27T12:28:46Z",
"engine": {
"name": "cve-database.git:bin/generate-csaf.pl",
"version": "1"
}
},
"id": "openSUSE-SU-2025-20115-1",
"initial_release_date": "2025-11-27T12:28:46Z",
"revision_history": [
{
"date": "2025-11-27T12:28:46Z",
"number": "1",
"summary": "Current version"
}
],
"status": "final",
"version": "1"
}
},
"product_tree": {
"branches": [
{
"branches": [
{
"branches": [
{
"category": "product_version",
"name": "pnpm-10.22.0-bp160.1.1.noarch",
"product": {
"name": "pnpm-10.22.0-bp160.1.1.noarch",
"product_id": "pnpm-10.22.0-bp160.1.1.noarch"
}
},
{
"category": "product_version",
"name": "pnpm-bash-completion-10.22.0-bp160.1.1.noarch",
"product": {
"name": "pnpm-bash-completion-10.22.0-bp160.1.1.noarch",
"product_id": "pnpm-bash-completion-10.22.0-bp160.1.1.noarch"
}
},
{
"category": "product_version",
"name": "pnpm-fish-completion-10.22.0-bp160.1.1.noarch",
"product": {
"name": "pnpm-fish-completion-10.22.0-bp160.1.1.noarch",
"product_id": "pnpm-fish-completion-10.22.0-bp160.1.1.noarch"
}
},
{
"category": "product_version",
"name": "pnpm-zsh-completion-10.22.0-bp160.1.1.noarch",
"product": {
"name": "pnpm-zsh-completion-10.22.0-bp160.1.1.noarch",
"product_id": "pnpm-zsh-completion-10.22.0-bp160.1.1.noarch"
}
}
],
"category": "architecture",
"name": "noarch"
},
{
"branches": [
{
"category": "product_name",
"name": "openSUSE Leap 16.0",
"product": {
"name": "openSUSE Leap 16.0",
"product_id": "openSUSE Leap 16.0"
}
}
],
"category": "product_family",
"name": "SUSE Linux Enterprise"
}
],
"category": "vendor",
"name": "SUSE"
}
],
"relationships": [
{
"category": "default_component_of",
"full_product_name": {
"name": "pnpm-10.22.0-bp160.1.1.noarch as component of openSUSE Leap 16.0",
"product_id": "openSUSE Leap 16.0:pnpm-10.22.0-bp160.1.1.noarch"
},
"product_reference": "pnpm-10.22.0-bp160.1.1.noarch",
"relates_to_product_reference": "openSUSE Leap 16.0"
},
{
"category": "default_component_of",
"full_product_name": {
"name": "pnpm-bash-completion-10.22.0-bp160.1.1.noarch as component of openSUSE Leap 16.0",
"product_id": "openSUSE Leap 16.0:pnpm-bash-completion-10.22.0-bp160.1.1.noarch"
},
"product_reference": "pnpm-bash-completion-10.22.0-bp160.1.1.noarch",
"relates_to_product_reference": "openSUSE Leap 16.0"
},
{
"category": "default_component_of",
"full_product_name": {
"name": "pnpm-fish-completion-10.22.0-bp160.1.1.noarch as component of openSUSE Leap 16.0",
"product_id": "openSUSE Leap 16.0:pnpm-fish-completion-10.22.0-bp160.1.1.noarch"
},
"product_reference": "pnpm-fish-completion-10.22.0-bp160.1.1.noarch",
"relates_to_product_reference": "openSUSE Leap 16.0"
},
{
"category": "default_component_of",
"full_product_name": {
"name": "pnpm-zsh-completion-10.22.0-bp160.1.1.noarch as component of openSUSE Leap 16.0",
"product_id": "openSUSE Leap 16.0:pnpm-zsh-completion-10.22.0-bp160.1.1.noarch"
},
"product_reference": "pnpm-zsh-completion-10.22.0-bp160.1.1.noarch",
"relates_to_product_reference": "openSUSE Leap 16.0"
}
]
},
"vulnerabilities": [
{
"cve": "CVE-2021-1234",
"ids": [
{
"system_name": "SUSE CVE Page",
"text": "https://www.suse.com/security/cve/CVE-2021-1234"
}
],
"notes": [
{
"category": "general",
"text": "A vulnerability in the cluster management interface of Cisco\u0026nbsp;SD-WAN vManage Software could allow an unauthenticated, remote attacker to view sensitive information on an affected system. To be affected by this vulnerability, the vManage software must be in cluster mode.\r\nThis vulnerability is due to the absence of authentication for sensitive information in the cluster management interface. An attacker could exploit this vulnerability by sending a crafted request to the cluster management interface of an affected system. A successful exploit could allow the attacker to view sensitive information on the affected system.Cisco\u0026nbsp;has released software updates that address this vulnerability. There are no workarounds that address this vulnerability.",
"title": "CVE description"
}
],
"product_status": {
"recommended": [
"openSUSE Leap 16.0:pnpm-10.22.0-bp160.1.1.noarch",
"openSUSE Leap 16.0:pnpm-bash-completion-10.22.0-bp160.1.1.noarch",
"openSUSE Leap 16.0:pnpm-fish-completion-10.22.0-bp160.1.1.noarch",
"openSUSE Leap 16.0:pnpm-zsh-completion-10.22.0-bp160.1.1.noarch"
]
},
"references": [
{
"category": "external",
"summary": "CVE-2021-1234",
"url": "https://www.suse.com/security/cve/CVE-2021-1234"
}
],
"remediations": [
{
"category": "vendor_fix",
"details": "To install this SUSE Security Update use the SUSE recommended installation methods like YaST online_update or \"zypper patch\".\n",
"product_ids": [
"openSUSE Leap 16.0:pnpm-10.22.0-bp160.1.1.noarch",
"openSUSE Leap 16.0:pnpm-bash-completion-10.22.0-bp160.1.1.noarch",
"openSUSE Leap 16.0:pnpm-fish-completion-10.22.0-bp160.1.1.noarch",
"openSUSE Leap 16.0:pnpm-zsh-completion-10.22.0-bp160.1.1.noarch"
]
}
],
"threats": [
{
"category": "impact",
"date": "2025-11-27T12:28:46Z",
"details": "moderate"
}
],
"title": "CVE-2021-1234"
},
{
"cve": "CVE-2021-5678",
"ids": [
{
"system_name": "SUSE CVE Page",
"text": "https://www.suse.com/security/cve/CVE-2021-5678"
}
],
"notes": [
{
"category": "general",
"text": "unknown",
"title": "CVE description"
}
],
"product_status": {
"recommended": [
"openSUSE Leap 16.0:pnpm-10.22.0-bp160.1.1.noarch",
"openSUSE Leap 16.0:pnpm-bash-completion-10.22.0-bp160.1.1.noarch",
"openSUSE Leap 16.0:pnpm-fish-completion-10.22.0-bp160.1.1.noarch",
"openSUSE Leap 16.0:pnpm-zsh-completion-10.22.0-bp160.1.1.noarch"
]
},
"references": [
{
"category": "external",
"summary": "CVE-2021-5678",
"url": "https://www.suse.com/security/cve/CVE-2021-5678"
}
],
"remediations": [
{
"category": "vendor_fix",
"details": "To install this SUSE Security Update use the SUSE recommended installation methods like YaST online_update or \"zypper patch\".\n",
"product_ids": [
"openSUSE Leap 16.0:pnpm-10.22.0-bp160.1.1.noarch",
"openSUSE Leap 16.0:pnpm-bash-completion-10.22.0-bp160.1.1.noarch",
"openSUSE Leap 16.0:pnpm-fish-completion-10.22.0-bp160.1.1.noarch",
"openSUSE Leap 16.0:pnpm-zsh-completion-10.22.0-bp160.1.1.noarch"
]
}
],
"threats": [
{
"category": "impact",
"date": "2025-11-27T12:28:46Z",
"details": "moderate"
}
],
"title": "CVE-2021-5678"
}
]
}
Loading…
Loading…
Sightings
| Author | Source | Type | Date |
|---|
Nomenclature
- Seen: The vulnerability was mentioned, discussed, or observed by the user.
- Confirmed: The vulnerability has been validated from an analyst's perspective.
- Published Proof of Concept: A public proof of concept is available for this vulnerability.
- Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
- Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
- Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
- Not confirmed: The user expressed doubt about the validity of the vulnerability.
- Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.
Loading…
Loading…