用途:本技能面向单仓库(monorepo)的建设与维护,适用于新建 monorepo、从多仓库迁移、优化构建与测试性能、管理共享依赖、实现代码共享、配置 CI/CD、包版本与发布,以及排查 monorepo 特有问题。
主要能力:
- 工具选型。包管理器推荐 pnpm workspaces,另有 npm、Yarn workspaces;构建系统推荐 Turborepo,Nx 功能丰富但较复杂,Lerna 处于维护模式。
- Turborepo。可用 npx create-turbo@latest my-monorepo 初始化,典型结构为 apps(web、docs)与 packages(ui、config、tsconfig),通过 turbo.json 的 pipeline 定义 build、test、lint、dev、type-check 的 dependsOn、outputs 与 cache。
- pnpm workspaces。使用 pnpm-workspace.yaml 声明 apps/、packages/、tools/*;常用命令如 pnpm add react --filter @repo/ui、pnpm add @repo/ui --filter web、pnpm -r build、pnpm --filter "...web" build。
- Nx。用 npx create-nx-workspace@latest my-org 初始化,可生成应用与库;nx.json 配置 targetDefaults 与 namedInputs;支持 nx build my-app、nx affected:build、nx graph、nx run-many。
- 共享配置与模式。集中维护 TypeScript(base.json/react.json)、ESLint 预设;提供共享 UI 组件、工具函数与类型三种代码共享模式。
- 构建优化与 CI/CD。Turborepo 支持输入/输出缓存与远程缓存(turbo login、turbo link);GitHub Actions 中配合 pnpm、turbo 执行 build、test、lint、type-check,并可仅部署受影响应用。
- 发布。使用 Changesets:pnpm add -Dw @changesets/cli、pnpm changeset init、pnpm changeset、pnpm changeset version、pnpm changeset publish。
最佳实践与常见问题:保持依赖版本一致、集中共享配置、依赖图无环、正确配置缓存输入输出、类型共享、包内单元测试与应用端 E2E、每个包写 README、用 Changesets 管理发布。需避免循环依赖、幻影依赖、缓存输入遗漏、过度或不足共享,以及大型仓库缺乏工具导致的构建变慢。
限制:资料未提供各工具的性能基准、授权与价格信息;除上述命令与配置外,其他平台细节、完整 API 与版本兼容性暂未提供,实际使用需结合项目自行验证。