Turborepo高效管理Monorepo项目前言各位前端小伙伴不知道你们有没有遇到过这种情况项目越来越大多个包之间的依赖管理变得非常复杂我曾经维护过一个包含多个包的Monorepo项目构建速度越来越慢依赖关系越来越乱。后来我引入了Turborepo一切都变得清晰高效Turborepo核心原理为什么选择TurborepoTurborepo是一个高性能的Monorepo构建工具具有以下优势智能缓存只重新构建变化的内容并行执行充分利用多核CPU任务编排自动处理依赖关系远程缓存共享构建缓存Turborepo架构┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │ 缓存层 │ │ 调度层 │ │ 执行层 │ └────────┬────────┘ └────────┬────────┘ └────────┬────────┘ │ │ │ │ 1. 检查缓存 │ │ │───────────────────────│ │ │ │ │ │ │ 2. 调度任务 │ │───────────────────────│ │ │ │ │ │ │ │ 3. 执行任务 │ │ │────────────────────────│Turborepo配置详解基本配置// turbo.json { $schema: https://turborepo.org/schema.json, pipeline: { build: { dependsOn: [^build], outputs: [dist/**, build/**] }, test: { dependsOn: [build], outputs: [] }, lint: { outputs: [] } } }任务配置{ pipeline: { build: { dependsOn: [^build], outputs: [dist/**] }, dev: { cache: false, persistent: true }, test: { dependsOn: [build], outputs: [], inputs: [src/**/*.ts, src/**/*.tsx] } } }环境变量配置{ globalEnv: [NODE_ENV, API_URL], pipeline: { build: { dependsOn: [^build], outputs: [dist/**] } } }Turborepo项目结构典型结构my-repo/ ├── apps/ │ ├── web/ │ │ ├── src/ │ │ ├── package.json │ │ └── vite.config.js │ └── mobile/ │ ├── src/ │ ├── package.json │ └── vite.config.js ├── packages/ │ ├── ui/ │ │ ├── src/ │ │ └── package.json │ └── utils/ │ ├── src/ │ └── package.json ├── package.json ├── turbo.json └── tsconfig.jsonpackage.json配置{ name: my-repo, private: true, workspaces: [ apps/*, packages/* ], scripts: { build: turbo run build, dev: turbo run dev, test: turbo run test, lint: turbo run lint }, devDependencies: { turbo: ^1.10.0 } }Turborepo高级功能远程缓存{ remoteCache: { signature: true, provider: vercel }, pipeline: { build: { dependsOn: [^build], outputs: [dist/**] } } }过滤执行# 只构建指定包 turbo run build --filtermy-repo/ui # 排除指定包 turbo run build --filter!my-repo/mobile # 构建依赖于指定包的项目 turbo run build --filtermy-repo/web...增量构建{ pipeline: { build: { dependsOn: [^build], outputs: [dist/**], inputs: [src/**/*.ts, src/**/*.tsx] } } }Turborepo实战创建项目npx create-turbo6.5.0 .配置脚本{ scripts: { build: turbo run build, dev: turbo run dev, test: turbo run test, lint: turbo run lint } }运行项目npm run build # 构建所有项目 npm run dev # 启动开发服务器 npm run test # 运行所有测试Turborepo vs 其他工具对比特性TurborepoNxLerna缓存机制智能缓存智能缓存无并行执行是是有限远程缓存是是无复杂度低高中生态中等高成熟Turborepo最佳实践1. 合理划分项目apps/ # 应用程序 packages/ # 共享包2. 配置正确的outputs{ pipeline: { build: { outputs: [dist/**, build/**] } } }3. 使用远程缓存turbo login turbo link4. 合理使用过滤turbo run build --filtermy-repo/webTurborepo常见问题问题1缓存不生效解决方案检查outputs配置检查inputs配置使用--force重新构建问题2依赖关系错误解决方案检查dependsOn配置检查package.json中的依赖使用--dry-run查看执行顺序问题3远程缓存问题解决方案检查认证状态检查网络连接检查权限配置总结Turborepo是一个高性能的Monorepo构建工具通过智能缓存和并行执行提供了高效的开发体验智能缓存只重新构建变化的内容并行执行充分利用多核CPU任务编排自动处理依赖关系远程缓存共享构建缓存现在开始使用Turborepo管理你的Monorepo项目吧你的开发效率会感谢你的最后一句忠告不要滥用Monorepo小型项目使用单仓库更简单