Monorepo 实战
Monorepo(单一仓库多包)是大型前端项目的标配,pnpm + Turborepo 是目前最优组合。
目录结构
my-monorepo/
├── apps/
│ ├── web/ # 主应用
│ └── admin/ # 后台
├── packages/
│ ├── ui/ # 共享组件库
│ └── utils/ # 工具函数
├── pnpm-workspace.yaml
└── turbo.json
pnpm workspace
# pnpm-workspace.yaml
packages:
- "apps/*"
- "packages/*"
Turborepo 任务编排
// turbo.json
{
"tasks": {
"build": {
"dependsOn": ["^build"],
"outputs": ["dist/**"]
},
"test": { "dependsOn": ["build"] },
"lint": {}
}
}
turbo build 会自动分析依赖关系,并行执行无依赖的任务,并缓存结果——第二次构建几乎瞬间完成。
核心收益
- 依赖提升,安装体积小
- 任务并行 + 增量缓存
- 跨包引用本地源码,改完立即生效