Skip to main content

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-age cover 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_modules correctly.

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โ€‹

npm

Resourcesโ€‹