用途:该技能面向 monorepo 的搭建与维护,涵盖新建 monorepo 项目、从多仓库迁移到 monorepo、优化构建与测试性能、管理共享依赖、实现代码共享策略、为 monorepo 配置 CI/CD、包版本管理与发布,以及排查 monorepo 特有问题等场景。
主要能力:介绍 monorepo 的优势(共享代码与依赖、跨项目原子提交、统一工具与规范、便于重构、依赖管理简化、代码可见性提升)与挑战(规模化构建性能、CI/CD 复杂度、访问控制、Git 仓库体积大)。工具方面,包管理器推荐 pnpm workspaces,另有 npm workspaces 与 Yarn workspaces;构建系统推荐 Turborepo,Nx 功能丰富但较复杂,Lerna 较旧且处于维护模式。
使用方式:可通过 npx create-turbo@latest my-monorepo 创建 Turborepo 项目,典型结构含 apps/(web、docs)与 packages/(ui、config、tsconfig)。turbo.json 中用 pipeline 定义 build、test、lint、dev、type-check 等任务及其 dependsOn、outputs、cache 等。根 package.json 设置 private、workspaces、scripts 与 packageManager。子包通过 workspace:* 引用共享配置。发布使用 Changesets:pnpm add -Dw @changesets/cli、pnpm changeset init、pnpm changeset、pnpm changeset version、pnpm changeset publish,并在 GitHub Actions 中用 changesets/action@v1。更详细的模式见 references/details.md。
最佳实践与限制:锁定跨工作区依赖版本、集中 ESLint/TypeScript/Prettier 配置、保持依赖图无环、正确配置缓存输入输出、共享类型、包内做单元测试、应用内做 E2E、每包配 README、使用 changesets 做版本发布。常见陷阱包括循环依赖、幽灵依赖、缓存输入缺失、过度或不足共享代码,以及缺少工具时大型 monorepo 构建变慢。价格、平台支持等信息暂未提供。