pnpm without the five pain points.
pnpm-plus is a community-maintained build of pnpm that
flips five defaults that the wider community has loudly objected to. Every
behaviour is still configurable, but the new defaults line up with how
real-world teams actually install packages.
The five pain points that are gone by default:
- Lifecycle scripts are not blocked.
dangerously-allow-all-builds: trueso packages likebcryptandesbuildkeep compiling native binaries onpnpm install. You can still set it back tofalseper project. minimumReleaseAgeis off. No more "frozen" 1-day cutoff that breakspnpm update, and the strict-by-default toggle that exploded on immature transitive deps has been removed.engineStrictandverify-deps-before-runare off. You can keep using Node 18/20/22 in a corporate fleet withoutpnpm installfailing on the engine field of an unrelated dependency.- Peer dependencies are loose.
strict-peer-dependencies: falseandauto-install-peers: trueso React 18 and React 19 micro-frontends can coexist in a pnpm monorepo without manually tuningpnpm.peerDependencyRules. - Pacquet (Rust rewrite) is opt-in.
pnpm-plusstays on the JS resolver/install path by default. AddconfigDependencies: { pacquet: ... }topnpm-workspace.yamlif you want to try the Rust engine.
The product surface, CLI commands, and file formats are identical to upstream pnpm. Drop-in replacement.
# From GitHub Releases (recommended)
curl -fsSL https://raw.githubusercontent.com/TheAstrayDev/pnpm-plus/main/install.sh | shThe installer puts pnpm-plus (and a pnpm shim) into
~/.local/bin.
pnpm-plus install
pnpm-plus add react
pnpm-plus test
pnpm-plus dlx create-vite my-apppnpm-plus accepts every CLI flag that pnpm does. The only difference
is the default values listed above.
The defaults that were modified live in
pnpm11/config/reader/src/index.ts:
- 'dangerously-allow-all-builds': false,
+ 'dangerously-allow-all-builds': true,
- 'minimum-release-age': 24 * 60,
- 'minimum-release-age-ignore-missing-time': true,
+ 'minimum-release-age': 0,
+ 'minimum-release-age-strict': false,
+ 'minimum-release-age-ignore-missing-time': true,
- 'verify-deps-before-run': 'install',
+ 'verify-deps-before-run': false,
- 'block-exotic-subdeps': true,
+ 'block-exotic-subdeps': false,The auto-strict block that silently flipped minimumReleaseAge into
strict mode is also removed. See
CHANGELOG.md for the full list.
- Same lockfile format as pnpm.
- Same
package.jsonandpnpm-workspace.yamlfields as pnpm. - Same engine support as upstream pnpm (Node 18+ for installing projects; building pnpm-plus itself requires Node 22.13+ because that is the upstream monorepo's policy).
This is a focused fork: it tracks pnpm/pnpm for bug fixes, but the
defaults are patched to match the five pain points above. Bug reports
about behaviour that is unchanged from upstream pnpm should ideally be
filed at https://github.com/pnpm/pnpm/issues; everything else is
welcome here.
MIT. See LICENSE.