What pnpm Does
- Fast installs — 2-3x faster than npm
- Disk efficient — global content-addressable store (~/.pnpm-store)
- Strict node_modules — no phantom dependencies
- Monorepo — first-class workspace support
- Deterministic — pnpm-lock.yaml
- Catalogs — shared version ranges across workspace
- Patches — patch-package built in
Architecture
Global store at ~/.pnpm-store/v3 holds all package tarballs (content-addressed). Each project gets a node_modules/.pnpm directory with hardlinks to the store, then symlinks in node_modules/ to expose direct deps. Non-direct deps stay hidden (no phantom deps).
Self-Hosting
CLI tool — install locally, no server.
Key Features
- 2-3x faster than npm/yarn classic
- Up to 50% disk space savings
- Strict dependency resolution
- Workspace/monorepo first-class
pnpm dlxfor one-off commands- Built-in
pnpm patchfor upstream fixes - Catalogs (v9+) for shared versions
- Side-effects cache
Comparison
| Manager | Speed | Disk | Monorepo | Strict |
|---|---|---|---|---|
| pnpm | Fast | Best | First-class | Yes |
| Yarn Berry | Fast | Medium | First-class | PnP |
| npm | Slowest | Worst | Workspaces | No |
| Bun | Fastest | Good | Basic | No |
常见问题 FAQ
Q: 会破坏现有项目吗?
A: 少数依赖 phantom deps 的老包会报错。解决:把它们加到 package.json 或用 public-hoist-pattern。
Q: 和 Turborepo/Nx 配合? A: 完美配合。pnpm 管依赖,Turborepo/Nx 管任务编排和缓存。
Q: 能替换 Yarn workspace 吗?
A: 能。迁移通常只需改 package.json 的 workspaces 为 pnpm-workspace.yaml。
来源与致谢 Sources
- Docs: https://pnpm.io
- GitHub: https://github.com/pnpm/pnpm
- License: MIT