You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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.
Patch Changes
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.
Packages executed via pnpm dlx and pnpm create are allowed to be built (run postinstall scripts) by default.
If the packages executed by dlx or create have dependencies that have to be built, they should be listed via the --allow-build flag. For instance, if you want to run a package called bundle that has esbuild in dependencies and want to allow esbuild to run postinstall scripts, run:
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.
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.
Patch Changes
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.
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. For example:
The pnpm link command now adds overrides to the root package.json.
In a workspace: The override is added to the root of the workspace, linking the dependency to all projects in the workspace.
Global linking: To link a package globally, run pnpm link from the package’s directory. Previously, you needed to use pnpm link -g.
Related PR: #8653
Secure hashing with SHA256:
Various hashing algorithms have been updated to SHA256 for enhanced security and consistency:
Long paths inside node_modules/.pnpm are now hashed with SHA256.
Long peer dependency hashes in the lockfile now use SHA256 instead of MD5. (This affects very few users since these are only used for long keys.)
The hash stored in the packageExtensionsChecksum field of pnpm-lock.yaml is now SHA256.
The side effects cache keys now use SHA256.
The pnpmfile checksum in the lockfile now uses SHA256 (#8530).
Configuration updates:
manage-package-manager-versions: enabled by default. pnpm now manages its own version based on the packageManager field in package.json by default.
public-hoist-pattern: nothing is hoisted by default. Packages containing eslint or prettier in their name are no longer hoisted to the root of node_modules. Related Issue: #8378
Upgraded @yarnpkg/extensions to v2.0.3. This may alter your lockfile.
virtual-store-dir-max-length: the default value on Windows has been reduced to 60 characters.
Reduced environment variables for scripts:
During script execution, fewer npm_package_* environment variables are set. Only name, version, bin, engines, and config remain.
Related Issue: #8552
All dependencies are now installed even if NODE_ENV=production. Related Issue: #8827
Changes to the global store:
Store version bumped to v10.
Some registries allow identical content to be published under different package names or versions. To accommodate this, index files in the store are now stored using both the content hash and package identifier.
This approach ensures that we can:
Validate that the integrity in the lockfile corresponds to the correct package, which might not be the case after a poorly resolved Git conflict.
Allow the same content to be referenced by different packages or different versions of the same package.
Related PR: #8510
Related Issue: #8204
More efficient side effects indexing. The structure of index files in the store has changed. Side effects are now tracked more efficiently by listing only file differences rather than all files.
Related PR: #8636
A new index directory stores package content mappings. Previously, these files were in files.
Other breaking changes:
The # character is now escaped in directory names within node_modules/.pnpm.
Related PR: #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.
Related PR: #8728
Dependencies added via a URL now record the final resolved URL in the lockfile, ensuring that any redirects are fully captured.
Related Issue: #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.
Related PR: #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.
Minor Changes
Added support for a new type of dependencies called "configurational dependencies". These dependencies are installed before all the other types of dependencies (before "dependencies", "devDependencies", "optionalDependencies").
Configurational dependencies cannot have dependencies of their own or lifecycle scripts. They should be added using exact version and the integrity checksum. Example:
New verify-deps-before-run setting. This setting controls how pnpm checks node_modules before running scripts:
install: Automatically run pnpm install if node_modules is outdated.
warn: Print a warning if node_modules is outdated.
prompt: Prompt the user to confirm running pnpm install if node_modules is outdated.
error: Throw an error if node_modules is outdated.
false: Disable dependency checks.
Related Issue: #8585
New inject-workspace-packages setting enables hard-linking all local workspace dependencies instead of symlinking them. Previously, this could be achieved using dependenciesMeta[].injected, which remains supported.
Related PR: #8836
Faster repeat installs:
On repeated installs, pnpm performs a quick check to ensure node_modules is up to date.
Related PR: #8838
pnpm add integrates with default workspace catalog:
When adding a dependency, pnpm add checks the default workspace catalog. If the dependency and version requirement match the catalog, pnpm add uses the catalog: protocol. Without a specified version, it matches the catalog’s version. If it doesn’t match, it falls back to standard behavior.
Related Issue: #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.
Related PR: #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.
Related PR: #8657
Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
If you want to rebase/retry this PR, check this box
Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.
This PR includes no changesets
When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types
This pull request's base commit is no longer the HEAD commit of its target branch. This means it includes changes from outside the original pull request, including, potentially, unrelated coverage changes.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
9.15.5
->10.3.0
Release Notes
pnpm/pnpm (pnpm)
v10.3.0
Compare Source
Minor Changes
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.Patch Changes
verify-deps-before-run
afterpnpm install --production|--no-optional
#9019.v10.2.1
Compare Source
Patch Changes
pnpm approve-builds
should work, when executed from a subdirectory of a workspace #9042.pnpm deploy --legacy
should work without injected dependencies.v10.2.0
Compare Source
Minor Changes
Packages executed via
pnpm dlx
andpnpm create
are allowed to be built (run postinstall scripts) by default.If the packages executed by
dlx
orcreate
have dependencies that have to be built, they should be listed via the--allow-build
flag. For instance, if you want to run a package calledbundle
that hasesbuild
in dependencies and want to allowesbuild
to run postinstall scripts, run:Related PR: #9026.
Patch Changes
pnpm deploy
fails to read the correctprojectId
when the deploy source is the same as the workspace directory #9001.overrides
from adding invalid version ranges topeerDependencies
by keeping thepeerDependencies
and overriding them with proddependencies
#8978.pnpm approve-builds
.v10.1.0
Compare Source
Minor Changes
pnpm ignored-builds
#8963.pnpm approve-builds
#8963.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.Patch Changes
pnpm install
, thepreprepare
andpostprepare
scripts of the project should be executed #8989.workspace:
andcatalog:
to be part of wider version range inpeerDependencies
.pnpm deploy
should inherit thepnpm
object from the rootpackage.json
#8991.node_modules
in a sub-project of a monorepo is detected as out-of-date #8959.pnpm
to execute other scripts duringpnpm install
withverify-deps-before-run=install
#8954.strip-ansi
with the built-inutil.stripVTControlCharacters
#9009.v10.0.0
Compare Source
Major Changes
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 ofpackage.json
#8897. For example:pnpm link
behavior updated:The
pnpm link
command now adds overrides to the rootpackage.json
.pnpm link
from the package’s directory. Previously, you needed to usepnpm link -g
.Related PR: #8653
Secure hashing with SHA256:
Various hashing algorithms have been updated to SHA256 for enhanced security and consistency:
node_modules/.pnpm
are now hashed with SHA256.packageExtensionsChecksum
field ofpnpm-lock.yaml
is now SHA256.Configuration updates:
manage-package-manager-versions
: enabled by default. pnpm now manages its own version based on thepackageManager
field inpackage.json
by default.public-hoist-pattern
: nothing is hoisted by default. Packages containingeslint
orprettier
in their name are no longer hoisted to the root ofnode_modules
. Related Issue: #8378Upgraded
@yarnpkg/extensions
to v2.0.3. This may alter your lockfile.virtual-store-dir-max-length
: the default value on Windows has been reduced to 60 characters.Reduced environment variables for scripts:
During script execution, fewer
npm_package_*
environment variables are set. Onlyname
,version
,bin
,engines
, andconfig
remain.Related Issue: #8552
All dependencies are now installed even if
NODE_ENV=production
. Related Issue: #8827Changes to the global store:
Store version bumped to v10.
Some registries allow identical content to be published under different package names or versions. To accommodate this, index files in the store are now stored using both the content hash and package identifier.
This approach ensures that we can:
Related PR: #8510
Related Issue: #8204
More efficient side effects indexing. The structure of index files in the store has changed. Side effects are now tracked more efficiently by listing only file differences rather than all files.
Related PR: #8636
A new
index
directory stores package content mappings. Previously, these files were infiles
.Other breaking changes:
#
character is now escaped in directory names withinnode_modules/.pnpm
.Related PR: #8557
pnpm add --global pnpm
orpnpm add --global @​pnpm/exe
now fails with an error message, directing you to usepnpm self-update
instead.Related PR: #8728
Related Issue: #8833
pnpm deploy
command now only works in workspaces that haveinject-workspace-packages=true
. This limitation is introduced to allow us to create a proper lockfile for the deployed project using the workspace lockfile.pnpm test
now passes all parameters after thetest
keyword directly to the underlying script. This matches the behavior ofpnpm run test
. Previously you needed to use the--
prefix.Related PR: #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 orforce-legacy-deploy
is set totrue
.Minor Changes
Added support for a new type of dependencies called "configurational dependencies". These dependencies are installed before all the other types of dependencies (before "dependencies", "devDependencies", "optionalDependencies").
Configurational dependencies cannot have dependencies of their own or lifecycle scripts. They should be added using exact version and the integrity checksum. Example:
Related RFC: #8.
Related PR: #8915.
New settings:
New
verify-deps-before-run
setting. This setting controls howpnpm
checksnode_modules
before running scripts:install
: Automatically runpnpm install
ifnode_modules
is outdated.warn
: Print a warning ifnode_modules
is outdated.prompt
: Prompt the user to confirm runningpnpm install
ifnode_modules
is outdated.error
: Throw an error ifnode_modules
is outdated.false
: Disable dependency checks.Related Issue: #8585
New
inject-workspace-packages
setting enables hard-linking all local workspace dependencies instead of symlinking them. Previously, this could be achieved usingdependenciesMeta[].injected
, which remains supported.Related PR: #8836
Faster repeat installs:
On repeated installs,
pnpm
performs a quick check to ensurenode_modules
is up to date.Related PR: #8838
pnpm add
integrates with default workspace catalog:When adding a dependency,
pnpm add
checks the default workspace catalog. If the dependency and version requirement match the catalog,pnpm add
uses thecatalog:
protocol. Without a specified version, it matches the catalog’s version. If it doesn’t match, it falls back to standard behavior.Related Issue: #8640
pnpm dlx
now resolves packages to their exact versions and uses these exact versions for cache keys. This ensurespnpm dlx
always installs the latest requested packages.Related PR: #8811
No
node_modules
validation on certain commands. Commands that should not modifynode_modules
(e.g.,pnpm install --lockfile-only
) no longer validate or purgenode_modules
.Related PR: #8657
Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.