Agent Skills
返回列表
💻

Turborepo 单仓库架构管理

开发编程 更新于 2026.08.30

将以下提示词粘贴到你的 AI 对话框中:

请根据 https://skillhub.cn/install/skillhub.md,安装规范名 @kunlungrowth/kg-monorepo-turborepo 的 Monorepo 管理技能到当前 AI 助手中。

技能介绍

从 Polyrepo 到 Monorepo 的迁移痛点

当你的项目从最初的几个包膨胀到十几个仓库时,polyrepo 的边际成本开始显现:跨仓库的公共依赖重复安装、一次类型定义变更需要遍历所有相关仓库重新构建、代码评审时 PR diff 散落在多个仓库难以追踪。尤其是在 CI 层面,哪怕只是修改了一个共享工具包,所有依赖它的仓库都会触发完整的构建流水线,等待时间随着仓库数量线性增长。

技能如何工作

这套技能围绕 Turborepo + pnpm workspaces 的标准化方案展开,核心能力分为五步。

项目结构设计:按 apps + packages 的约定划分目录,让应用层与可复用的库层各归其位。

包管理与引用:通过 pnpm-workspace.yaml 统一声明工作空间,包间引用使用 workspace:*,发布时自动替换为实际版本号,避免手动维护版本依赖的出错风险。

任务编排:在 turbo.json 的 pipeline 中定义任务依赖关系:

  • ^ 表示拓扑排序——先构建被当前包依赖的包再构建自身
  • $ 表示仅依赖当前包自身完成

缓存策略:本地缓存通过 turbo run build 自动记录 outputs 目录下的产物,相同输入直接从缓存还原;远程缓存借助 --team= 参数配合 Vercel Remote Cache 实现团队成员共享。缓存指纹基于包名、package.json、lockfile、源码内容和环境变量自动失效,也可以通过 inputs 字段精细控制。

增量构建与 CI 优化:--filter=./apps/web... 只构建变更包及其依赖,--since=origin/main 只构建相对于主分支有变更的内容,--dry-run 预览执行计划而不实际运行。CI 侧建议缓存 node_modules/.cache/turbo 目录,让构建缓存跨流水线复用。

适用边界与注意点

并非所有项目都适合引入 Monorepo。如果项目只有 2-3 个小包,构建工具和工作空间管理的 overhead 会超过它带来的收益。同样,以非 JavaScript/TypeScript 为主的项目虽然 Turborepo 也部分支持,但并非最佳选择。在迁移前,建议先评估仓库数量、共享代码比例和 CI 等待时间的当前痛点,再决定是否采用这套方案。

使用场景

  • 团队有5个相互依赖的JS仓库,每次改公共组件要手动同步版本并逐个构建,想合并为单一monorepo统一包引用。
  • CI每次跑全量构建耗时40分钟,需要配置Turborepo本地与远程缓存,让未变更的包直接命中缓存跳过。
  • monorepo中包之间依赖关系混乱,存在循环引用,需要按拓扑排序重新整理turbo.json中的任务编排。
  • 项目目前用Lerna管理多包仓库,构建慢且配置复杂,想迁移到Turborepo并用pnpm workspaces管理依赖。

适合人员

  • 前端架构师,负责技术选型,需要在新项目立项时设计apps与packages的目录边界和包引用规范。
  • CI/CD工程师,负责流水线优化,需要降低多包项目构建时间并配置跨流水线的Turborepo缓存复用。
  • 技术负责人,管理多团队协作的代码库,需要统一公共UI库的版本管理和跨应用的依赖引用。
  • 熟悉Nx的开发者,负责技术栈迁移,需要将现有Lerna项目平稳迁移到Turborepo并配置pnpm工作空间。