pnpm
Discouraged
Not our default choice. We recommend npm for all projects.
What is itโ
pnpm is a fast, disk-space-efficient package manager that uses a content-addressable store and symlinks to avoid duplicating packages across projects. It also enforces strict dependency isolation by default.
Why it's not our defaultโ
- Extra install step โ unlike npm, pnpm doesn't ship with Node.js and must be separately installed and version-managed.
- CI/CD complexity โ requires additional setup and caching configuration on hosted runners.
- npm is good enough โ npm v7+ closed the performance gap significantly; workspaces, lockfiles, and
min-release-agecover most needs. - Team standardization โ using one package manager across all projects reduces friction when developers move between teams.
- Symlink edge cases โ some tools and deployment targets don't handle pnpm's symlinked
node_modulescorrectly.
When it makes senseโ
- Very large monorepos โ when install speed or disk usage across dozens of packages is a measurable bottleneck that npm can't address.
- Strict phantom-dependency enforcement โ when you need to guarantee no package uses undeclared dependencies.
- Existing pnpm project โ if you're joining or extending a project already using pnpm, there's no need to migrate away.
Alternativeโ
Resourcesโ
- pnpm website
- pnpm docs
- npm โ our recommended package manager