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 会自动分析依赖关系,并行执行无依赖的任务,并缓存结果——第二次构建几乎瞬间完成。

核心收益

  • 依赖提升,安装体积小
  • 任务并行 + 增量缓存
  • 跨包引用本地源码,改完立即生效