前端工程化 词条目录
前端Wiki/词条/pnpm 包管理器

pnpm 包管理器

定义高性能的 npm 替代品:硬链接 + 内容寻址存储,省磁盘、装得快、依赖更严格

npm 把每个项目的 node_modules 都完整拷一遍依赖——十个项目十份 lodash。pnpm 用全局 store(内容寻址存储)存唯一一份,各项目里用硬链接 + 符号链接组织依赖,磁盘与安装时间都大幅下降(实测大型 monorepo 提升 2-3 倍)。

另一个杀招是「严格依赖结构」:pnpm 的 node_modules 用非扁平结构,只有 package.json 声明的依赖能被 import——有效杜绝「幽灵依赖」(代码里直接用了传递依赖却不声明,npm 扁平结构下能跑,迁移就炸)。monorepo 场景它的工作区(workspace)能力也是标配。

JavaScript
# 安装
# npm i -g pnpm

# 常用命令与 npm 几乎一致
# pnpm add axios          安装
# pnpm add -D vitest      开发依赖
# pnpm install            按 lock 安装
# pnpm why lodash         查看依赖来源(谁引入了它)

# monorepo 工作区(pnpm-workspace.yaml)
packages:
  - 'packages/*'           # 各子包
  - 'apps/*'

# 根目录装跨包共享依赖:
# pnpm add -w lodash      -w = workspace root
# 子包引用同仓伙伴包:
# pnpm --filter ./packages/ui add @repo/utils

/* 严格结构的 node_modules:
 * node_modules/.pnpm/           ← 真身(硬链接到 store)
 * node_modules/lodash → 软链    ← 只有 package.json 声明的能用
 */
⚠ 常见误区
🔗 相关词条npm 与 package.jsonmonorepo 多包CI/CD
← 返回来源章节yarn 与 pnpm