pnpm通过硬链接实现高效的包管理。
工作原理:
# pnpm安装时
# 1. 下载包到全局store目录
~/.pnpm-store/v16/file/node_modules/lodash
# 2. 项目中创建硬链接
node_modules/.pnpm/lodash/node_modules/lodash → store中的文件
# 硬链接:同一个文件的多个引用,不占用额外磁盘
store管理:
# 查看store位置
pnpm store path
# 查看store大小
pnpm store status
# 清理未使用的包
pnpm store prune
依赖链接结构:
node_modules/
├── .pnpm/
│ ├── lodash@4.17.21/node_modules/lodash # 硬链接到store
│ └── react@18.2.0/node_modules/react
├── lodash → .pnpm/lodash@4.17.21/node_modules/lodash
└── react → .pnpm/react@18.2.0/node_modules/react
优势:
workspace支持:
# pnpm-workspace.yaml
packages:
- "apps/*"
- "packages/*"
面试追问:pnpm和npm的node_modules结构有什么区别?npm是扁平结构可能产生幽灵依赖,pnpm是嵌套结构更安全。