Features
- new config settings:
- hoist:
trueby default. Whenfalse, pnpm will not hoist any dependencies in node_modules, preventing dependencies inside node_modules from accessing unlisted dependencies. (#2004) - hoist-pattern:
*by default. All packages matching this pattern will be hoisted. For example, you can choose to hoist only eslint packages:hoist-pattern=eslint-*. By default, all packages are hoisted. (#1997, #1998) - shamefully-hoist: same as
shamefully-flattenin previous versions of pnpm. The project's code has access to hoisted dependencies. (#2006)
- hoist:
- new
node_modulesstructure.- all the hard linked dependencies are inside
node_modules/.pnpm - all the hoisted dependencies are symlinked into
node_modules/.pnpm/node_modules. So application code has no access to the hoisted packages but dependencies have.
- all the hard linked dependencies are inside
Breaking Changes
shamefully-flattenrenamed toshamefully-hoist.hoist-patternis*by default. All packages are hoisted but application code has access only to listed dependencies. So the buggy ecosystem packages will work but pnpm will prevent users from requiring packages that are not declared inpackage.json- all globally installed packages are always hoisted
pnpm addfails if no packages are specified (5f73a7c)pnpm installinstalls all dependencies of all workspace packages when executed inside a workspace (5f73a7c)independent-leavesis only allowed with hoisting turned off (f3d5037)