Minor Changes
-
A new setting is now supported:
dedupe-peer-dependents
.When this setting is set to
true
, packages with peer dependencies will be deduplicated after peers resolution.For instance, let's say we have a workspace with two projects and both of them have
webpack
in their dependencies.webpack
hasesbuild
in its optional peer dependencies, and one of the projects hasesbuild
in its dependencies. In this case, pnpm will link two instances ofwebpack
to thenode_modules/.pnpm
directory: one withesbuild
and another one without it:node_modules .pnpm webpack@1.0.0_esbuild@1.0.0 webpack@1.0.0 project1 node_modules webpack -> ../../node_modules/.pnpm/webpack@1.0.0/node_modules/webpack project2 node_modules webpack -> ../../node_modules/.pnpm/webpack@1.0.0_esbuild@1.0.0/node_modules/webpack esbuild
This makes sense because
webpack
is used in two projects, and one of the projects doesn't haveesbuild
, so the two projects cannot share the same instance ofwebpack
. However, this is not what most developers expect, especially since in a hoistednode_modules
, there would only be one instance ofwebpack
. Therefore, you may now use thededupe-peer-dependents
setting to deduplicatewebpack
when it has no conflicting peer dependencies. In this case, if we setdedupe-peer-dependents
totrue
, both projects will use the samewebpack
instance, which is the one that hasesbuild
resolved:node_modules .pnpm webpack@1.0.0_esbuild@1.0.0 project1 node_modules webpack -> ../../node_modules/.pnpm/webpack@1.0.0_esbuild@1.0.0/node_modules/webpack project2 node_modules webpack -> ../../node_modules/.pnpm/webpack@1.0.0_esbuild@1.0.0/node_modules/webpack esbuild
Patch Changes
-
The configuration added by
pnpm setup
should check if the pnpm home directory is already in the PATH before adding to the PATH.Before this change, this code was added to the shell:
export PNPM_HOME="$HOME/Library/pnpm" export PATH="$PNPM_HOME:$PATH"
Now this will be added:
export PNPM_HOME="$HOME/Library/pnpm" case ":$PATH:" in *":$PNPM_HOME:"*) ;; *) export PATH="$PNPM_HOME:$PATH" ;; esac
-
Add
skipped
status in exec report summary when script is missing #6139. -
pnpm env -g
should fail with a meaningful error message if pnpm cannot find the pnpm home directory, which is the directory into which Node.js is installed.