Breaking Changes
-
Node.js v10 support is dropped. At least Node.js v12.17 is required for the package to work.
-
The lockfile version is bumped to v5.3. Changes in the new format:
- Blank lines added between package/project entries to improve readability and decrease merge issues.
- The
resolution
,engines
,os
, andcpu
fields are now always written in a single lines, as the first keys of the package objects. - A new field is added to the package objects:
transitivePeerDependencies
.
-
The layout of the virtual store directory has changed (
node_modules/.pnpm
) to allow keeping cache in it:- All packages inside the virtual store directory are on the same depth. Instead of subdirectories, one directory is used with
#
instead of slashes. - New setting added:
modules-cache-max-age
. The default value of the setting is 10080 (7 days in seconds).modules-cache-max-age
is the time in minutes after which pnpm should remove the orphan packages fromnode_modules
.
- All packages inside the virtual store directory are on the same depth. Instead of subdirectories, one directory is used with
-
pnpx does not automatically install packages. A prompt asks the user if a package should be installed, if it is not present.
pnpx --yes
tells pnpx to install any missing package.pnpx --no
makes pnpx fail if the called packages is not installed. -
Arbitrary pre/post hooks for user-defined scripts (such as
prestart
) are not executed automatically. -
pnpmfile.js
renamed to.pnpmfile.cjs
in order to force CommonJS. -
.pnp.js
renamed to.pnp.cjs
in order to force CommonJS. -
The
pnpm-prefix
setting is removed. Useglobal-dir
to specify a custom location for the globally installed packages. -
The default depth of an update is
Infinity
, not0
. -
The
--global
option should be used when linking from/to the global modules directory.Linking a package to the global directory:
- pnpm v4:
pnpm link
- pnpm v5:
pnpm link --global
Linking a package from the global directory:
- pnpm v4:
pnpm link foo
- pnpm v5:
pnpm link --global foo
- pnpm v4:
-
pnpm's command file's extension changed to
.cjs
(bin/pnpm.js
=>bin/pnpm.cjs
). -
node-gyp updated to v8.
-
prepublish
is not executed on a localpnpm install
. Useprepare
instead.
Features
-
A new command added: pnpm fetch.
Fetch packages from a lockfile into virtual store, package manifest is ignored.
This command is specifically designed to boost building a docker image. -
Overrides match dependencies by checking if the target range is a subset of the specified range, instead of making an exact match.
For example, the following override will replace any version of
foo
that has a subrange on v2:"pnpm": { "overrides": { "foo@2": "2.1.0" } }
This will override
foo@2.2.0
andfoo@^2.3.0
tofoo@2.1.0
as both2.2.0
and^2.3.0
are subranges of2
.