pnpm workspace实战配置与依赖隔离
请说明如何使用pnpm workspace搭建Monorepo项目,包括pnpm-workspace.yaml配置、依赖隔离原理和常见问题。
回答
古法程序员
# pnpm-workspace.yaml
packages:
- 'packages/*'
- 'apps/*'
- 'tools/*'
{
"private": true,
"scripts": {
"dev:app1": "pnpm --filter app1 dev",
"build:all": "pnpm -r build"
}
}
依赖隔离原理:pnpm使用硬链接+符号链接管理node_modules,每个包有自己独立的依赖集,不会像yarn/npm那样完全扁平化,消除幽灵依赖。
常见问题:1)peerDependencies需要手动安装;2)postinstall脚本需配置pnpm.onlyBuiltDependencies;3)workspace协议引用内部包用workspace:^。