使用 pnpm 构建 Monorepo 项目
什么是 Monorepo?
Monorepo 是将多个相关项目放在同一个仓库中进行管理的策略。
pnpm Workspace
配置
# pnpm-workspace.yaml
packages:
- 'apps/*'
- 'packages/*'
根目录 package.json
{
"scripts": {
"dev": "pnpm --parallel -r run dev",
"build": "pnpm -r run build",
"lint": "pnpm -r run lint"
}
}
实际项目结构
monorepo/
├── apps/
│ ├── web/ # Next.js 应用
│ ├── docs/ # 文档站
│ └── admin/ # 后台管理
├── packages/
│ ├── ui/ # UI 组件库
│ ├── utils/ # 工具函数
│ └── config/ # 共享配置
├── pnpm-workspace.yaml
└── package.json
依赖管理
# 给某个包添加依赖
pnpm --filter @myapp/web add lodash
# 给所有包添加依赖
pnpm -r add typescript --save-dev
# 链接本地包
pnpm add @myapp/utils --workspace
优势
- 共享代码:轻松复用工具函数和组件
- 统一构建:一次配置,全局生效
- 原子提交:跨包改动在一个 PR 中完成
总结
pnpm workspace 是搭建 Monorepo 的绝佳选择,速度快、磁盘占用小、配置简单。