用途:为 JavaScript/TypeScript monorepo 提供 Turborepo 构建系统指导。Turborepo 会缓存任务输出,并依据依赖图并行运行任务。
主要能力与规则:优先使用包级任务而非根任务——脚本写入各相关包的 package.json,在根 turbo.json 注册任务,根 package.json 仅通过 turbo run <task> 委派;根任务(//#taskname)只用于确实无法放入包内的任务。写入代码的命令一律用 turbo run,简写 turbo <tasks> 仅限人工在终端一次性使用。
常用配置:turbo.json 中通过 dependsOn 定义依赖(^build 表示先构建依赖包,build 表示同包内先执行),outputs 指定构建产物,env 声明环境变量,inputs 纳入 .env 等文件,persistent 用于常驻开发任务。仅运行变更包用 turbo run build --affected,可配合 --affected-base 指定基线分支,或用 --filter 按包名、目录、依赖与反向依赖过滤。缓存问题可用 --summarize、--dry 调试,--force 跳过缓存。
适用场景:monorepo 任务编排、缓存与远程缓存、CI(GitHub Actions、Vercel)、turbo watch 监听、包结构与依赖管理、用 turbo boundaries 强制架构边界。
限制与注意:不要用 && 串联 turbo 任务,不要用 prebuild 手动构建依赖,避免过宽的 globalDependencies,避免用 --parallel 绕过依赖图,包内引用仓库根文件应使用 $TURBO_ROOT$ 而非 ../。Turborepo 本身不加载 .env 文件,但需将其纳入 inputs 以正确失效缓存。具体版本、收费与平台支持等资料暂未提供。