Releases: pnpm/pnpm
v8.15.5
v9.0.0-alpha.7
Major Changes
-
Node.js v16 support dropped. Use at least Node.js v18.12.
-
Lockfile version bumped to v7.
-
Support for lockfile v5 is dropped. Use pnpm v8 to convert lockfile v5 to lockfile v6 #7470.
-
The
dedupe-injected-deps
setting istrue
by default. -
The default value of the
link-workspace-packages
setting changed fromtrue
tofalse
. This means that by default, dependencies will be linked from workspace packages only when they are specified using the workspace protocol. -
Use the same directories on macOS as on Linux. Don't use directories inside
~/Library
on macOS #7321. -
The default value of the hoist-workspace-packages is
true
. -
pnpm licenses list
prints license information of all versions of the same package in case different versions use different licenses. The format of thepnpm licenses list --json
output has been changed #7528. -
A new command added for printing completion code to the console:
pnpm completion [shell]
. The old command that modified the user's shell dotfiles has been removed #3083. -
pnpm will now check the
package.json
file for apackageManager
field. If this field is present and specifies a different package manager or a different version of pnpm than the one you're currently using, pnpm will not proceed. This ensures that you're always using the correct package manager and version that the project requires. -
enable-pre-post-scripts
is set totrue
by default. This means that when you run a script likestart
,prestart
andpoststart
will also run. -
When installing git-hosted dependencies, only pick the files that would be packed with the package #7638.
-
Use the same directories on macOS as on Linux. Don't use directories inside
~/Library
on macOS #7321. -
Peer dependencies of peer dependencies are now resolved correctly. When peer dependencies have peer dependencies of their own, the peer dependencies are grouped with their own peer dependencies before being linked to their dependents.
For instance, if
card
hasreact
in peer dependencies andreact
hastypescript
in its peer dependencies, then the same version ofreact
may be linked from different places if there are multiple versions oftypescript
. For instance:project1/package.json { "dependencies": { "card": "1.0.0", "react": "16.8.0", "typescript": "7.0.0" } } project2/package.json { "dependencies": { "card": "1.0.0", "react": "16.8.0", "typescript": "8.0.0" } } node_modules .pnpm card@1.0.0(react@16.8.0(typescript@7.0.0)) node_modules card react --> ../../react@16.8.0(typescript@7.0.0)/node_modules/react react@16.8.0(typescript@7.0.0) node_modules react typescript --> ../../typescript@7.0.0/node_modules/typescript typescript@7.0.0 node_modules typescript card@1.0.0(react@16.8.0(typescript@8.0.0)) node_modules card react --> ../../react@16.8.0(typescript@8.0.0)/node_modules/react react@16.8.0(typescript@8.0.0) node_modules react typescript --> ../../typescript@8.0.0/node_modules/typescript typescript@8.0.0 node_modules typescript
In the above example, both projects have
card
in dependencies but the projects use different versions oftypescript
. Hence, even though the same version ofcard
is used,card
inproject1
will referencereact
from a directory where it is placed withtypescript@7.0.0
(because it resolvestypescript
from the dependencies ofproject1
), whilecard
inproject2
will referencereact
withtypescript@8.0.0
.Related issue: #7444.
Related PR: #7606.
Minor Changes
-
It is now possible to install only a subdirectory from a Git repository.
For example,
pnpm add github:user/repo#path:packages/foo
will add a dependency from thepackages/foo
subdirectory.This new parameter may be combined with other supported parameters separated by
&
. For instance, the next command will install the same package from thedev
branch:pnpm add github:user/repo#dev&path:packages/bar
. -
node-gyp
updated to version 10. -
PowerShell completion support added #7597.
-
Support
node-options
option inside.npmrc
file when running scripts #7596. -
Added support for registry-scoped SSL configurations (cert, key, and ca). Three new settings supported:
<registryURL>:certfile
,<registryURL>:keyfile
, and<registryURL>:ca
. For instance://registry.mycomp.com/:certfile=server-cert.pem //registry.mycomp.com/:keyfile=server-key.pem //registry.mycomp.com/:cafile=client-cert.pem
-
Add a field named
ignoredOptionalDependencies
. This is an array of strings. If an optional dependency has its name included in this array, it will be skipped #7714. -
The checksum of the
.pnpmfile.cjs
is saved into the lockfile. If the pnpmfile gets modified, the lockfile is reanalyzed to apply the changes #7662.
Platinum Sponsors
Gold Sponsors
|
|
|
|
|
Our Silver Sponsors
v8.15.4
Patch Changes
- Print the right error code when a package fails to be added to the store #7679.
- Don't fail on a tarball that appears to be not a USTAR or GNU TAR archive. Still try to unpack the tarball #7120.
- Always add a name and version field to the index files in the store #7115.
- Deleting a dependencies field via a
readPackage
hook should work #7704. - Symlinks should be resolved and uploaded to the side-effects cache #7691.
Platinum Sponsors
Gold Sponsors
|
|
|
|
|
Our Silver Sponsors
|
|
|
|
|
|
|
v9.0.0-alpha.5
Major Changes
-
Node.js v16 support dropped. Use at least Node.js v18.12.
-
Lockfile version bumped to v7.
-
Support for lockfile v5 is dropped. Use pnpm v8 to convert lockfile v5 to lockfile v6 #7470.
-
The
dedupe-injected-deps
setting istrue
by default. -
The default value of the
link-workspace-packages
setting changed fromtrue
tofalse
. This means that by default, dependencies will be linked from workspace packages only when they are specified using the workspace protocol. -
Use the same directories on macOS as on Linux. Don't use directories inside
~/Library
on macOS #7321. -
The default value of the hoist-workspace-packages is
true
. -
pnpm licenses list
prints license information of all versions of the same package in case different versions use different licenses. The format of thepnpm licenses list --json
output has been changed #7528. -
A new command added for printing completion code to the console:
pnpm completion [shell]
. The old command that modified the user's shell dotfiles has been removed #3083. -
pnpm will now check the
package.json
file for apackageManager
field. If this field is present and specifies a different package manager or a different version of pnpm than the one you're currently using, pnpm will not proceed. This ensures that you're always using the correct package manager and version that the project requires. -
enable-pre-post-scripts
is set totrue
by default. This means that when you run a script likestart
,prestart
andpoststart
will also run. -
When installing git-hosted dependencies, only pick the files that would be packed with the package #7638.
-
Use the same directories on macOS as on Linux. Don't use directories inside
~/Library
on macOS #7321. -
Peer dependencies of peer dependencies are now resolved correctly. When peer dependencies have peer dependencies of their own, the peer dependencies are grouped with their own peer dependencies before being linked to their dependents.
For instance, if
card
hasreact
in peer dependencies andreact
hastypescript
in its peer dependencies, then the same version ofreact
may be linked from different places if there are multiple versions oftypescript
. For instance:project1/package.json { "dependencies": { "card": "1.0.0", "react": "16.8.0", "typescript": "7.0.0" } } project2/package.json { "dependencies": { "card": "1.0.0", "react": "16.8.0", "typescript": "8.0.0" } } node_modules .pnpm card@1.0.0(react@16.8.0(typescript@7.0.0)) node_modules card react --> ../../react@16.8.0(typescript@7.0.0)/node_modules/react react@16.8.0(typescript@7.0.0) node_modules react typescript --> ../../typescript@7.0.0/node_modules/typescript typescript@7.0.0 node_modules typescript card@1.0.0(react@16.8.0(typescript@8.0.0)) node_modules card react --> ../../react@16.8.0(typescript@8.0.0)/node_modules/react react@16.8.0(typescript@8.0.0) node_modules react typescript --> ../../typescript@8.0.0/node_modules/typescript typescript@8.0.0 node_modules typescript
In the above example, both projects have
card
in dependencies but the projects use different versions oftypescript
. Hence, even though the same version ofcard
is used,card
inproject1
will referencereact
from a directory where it is placed withtypescript@7.0.0
(because it resolvestypescript
from the dependencies ofproject1
), whilecard
inproject2
will referencereact
withtypescript@8.0.0
.Related issue: #7444.
Related PR: #7606.
Minor Changes
-
It is now possible to install only a subdirectory from a Git repository.
For example,
pnpm add github:user/repo#path:packages/foo
will add a dependency from thepackages/foo
subdirectory.This new parameter may be combined with other supported parameters separated by
&
. For instance, the next command will install the same package from thedev
branch:pnpm add github:user/repo#dev&path:packages/bar
. -
node-gyp
updated to version 10. -
PowerShell completion support added #7597.
-
Support
node-options
option inside.npmrc
file when running scripts #7596. -
Added support for registry-scoped SSL configurations (cert, key, and ca). Three new settings supported:
<registryURL>:certfile
,<registryURL>:keyfile
, and<registryURL>:ca
. For instance://registry.mycomp.com/:certfile=server-cert.pem //registry.mycomp.com/:keyfile=server-key.pem //registry.mycomp.com/:cafile=client-cert.pem
Platinum Sponsors
Gold Sponsors
|
|
|
|
|
Our Silver Sponsors
...
|
|
v8.15.3
v7.33.7
v8.15.2
Patch Changes
- When purging multiple
node_modules
directories, pnpm will no longer print multiple prompts simultaneously. - Don't print an unnecessary warning when adding new dependencies to a project that uses hoisted
node_modules
. - Linking globally the command of a package that has no name in
package.json
#4761. - Installation should work with lockfile created by pnpm v9.0.0-alpha.4
Platinum Sponsors
Gold Sponsors
|
|
|
|
|
Our Silver Sponsors
|
|
|
|
|
|
|
v9.0.0-alpha.4
Major Changes
-
Node.js v16 support dropped. Use at least Node.js v18.12.
-
Support for lockfile v5 is dropped. Use pnpm v8 to convert lockfile v5 to lockfile v6 #7470.
-
The
dedupe-injected-deps
setting istrue
by default. -
The default value of the
link-workspace-packages
setting changed fromtrue
tofalse
. This means that by default, dependencies will be linked from workspace packages only when they are specified using the workspace protocol. -
Use the same directories on macOS as on Linux. Don't use directories inside
~/Library
on macOS #7321. -
The default value of the hoist-workspace-packages is
true
. -
pnpm licenses list
prints license information of all versions of the same package in case different versions use different licenses. The format of thepnpm licenses list --json
output has been changed #7528. -
A new command added for printing completion code to the console:
pnpm completion [shell]
. The old command that modified the user's shell dotfiles has been removed #3083. -
Use the same directories on macOS as on Linux. Don't use directories inside
~/Library
on macOS #7321. -
Peer dependencies of peer dependencies are now resolved correctly. When peer dependencies have peer dependencies of their own, the peer dependencies are grouped with their own peer dependencies before being linked to their dependents.
For instance, if
card
hasreact
in peer dependencies andreact
hastypescript
in its peer dependencies, then the same version ofreact
may be linked from different places if there are multiple versions oftypescript
. For instance:project1/package.json { "dependencies": { "card": "1.0.0", "react": "16.8.0", "typescript": "7.0.0" } } project2/package.json { "dependencies": { "card": "1.0.0", "react": "16.8.0", "typescript": "8.0.0" } } node_modules .pnpm card@1.0.0(react@16.8.0(typescript@7.0.0)) node_modules card react --> ../../react@16.8.0(typescript@7.0.0)/node_modules/react react@16.8.0(typescript@7.0.0) node_modules react typescript --> ../../typescript@7.0.0/node_modules/typescript typescript@7.0.0 node_modules typescript card@1.0.0(react@16.8.0(typescript@8.0.0)) node_modules card react --> ../../react@16.8.0(typescript@8.0.0)/node_modules/react react@16.8.0(typescript@8.0.0) node_modules react typescript --> ../../typescript@8.0.0/node_modules/typescript typescript@8.0.0 node_modules typescript
In the above example, both projects have
card
in dependencies but the projects use different versions oftypescript
. Hence, even though the same version ofcard
is used,card
inproject1
will referencereact
from a directory where it is placed withtypescript@7.0.0
(because it resolvestypescript
from the dependencies ofproject1
), whilecard
inproject2
will referencereact
withtypescript@8.0.0
.Related issue: #7444.
Related PR: #7606.
Minor Changes
-
It is now possible to install only a subdirectory from a Git repository.
For example,
pnpm add github:user/repo#path:packages/foo
will add a dependency from thepackages/foo
subdirectory.This new parameter may be combined with other supported parameters separated by
&
. For instance, the next command will install the same package from thedev
branch:pnpm add github:user/repo#dev&path:packages/bar
. -
node-gyp
updated to version 10. -
PowerShell completion support added #7597.
-
Support
node-options
option inside.npmrc
file when running scripts #7596
Platinum Sponsors
Gold Sponsors
|
|
|
|
|
Our Silver Sponsors
|
|
|
|
v8.15.1
v8.15.0
Upgrade to v8.15.1 or newer
Minor Changes
- When the license field does not exist in
package.json
but a license file exists, try to match and extract the license name #7530.
Patch Changes
- Running
pnpm update -r --latest
will no longer downgrade prerelease dependencies #7436. --aggregate-output
should work on scripts executed from the same project #7556.- Prefer hard links over reflinks on Windows as they perform better #7564.
- Reduce the length of the side-effects cache key. Instead of saving a stringified object composed from the dependency versions of the package, use the hash calculated from the said object #7563.
- Throw an error if
pnpm update --latest
runs with arguments containing versions specs. For instance,pnpm update --latest foo@next
is not allowed #7567. - Don't fail in Windows CoW if the file already exists #7554.
Platinum Sponsors
Gold Sponsors
|
|
|
|
|
Our Silver Sponsors
|
|
|
|
|
|
|