Turborepo 是面向 JavaScript/TypeScript monorepo 的构建系统,用于任务编排与缓存:依据依赖图并行执行任务,并缓存任务输出。配置使用 turbo.json(或带注释的 turbo.jsonc),建议在 $schema 中填写 https://turborepo.dev/schema.json。
主要能力:用 dependsOn 定义任务顺序,如 ["^build"] 先构建依赖、["codegen"] 先跑同包任务、["pkg#task"] 指定包任务;用 outputs 指定构建产物;用 env/globalEnv 声明影响缓存的变量;用 persistent: true 与 cache: false 处理常驻开发服务;用 with 声明并行伴随任务;支持 turbo watch dev 监听文件变化。过滤方式包括 --filter=web、--filter=web...(含依赖)、--affected(变更及其依赖者),可用 --summarize 或 --dry 调试缓存。还提供 turbo boundaries 校验包边界、turbo query 查询依赖图、turbo generate 生成包与组件、turbo ls 列出包、turbo devtools 可视化图、turbo prune <pkg> --docker 生成容器构建用的最小切片。包级配置可 extends: ["//"] 或继承工作区包,数组内用 $TURBO_EXTENDS$ 追加而非覆盖。
适用与限制:适用于 monorepo 任务编排、构建缓存、CI 优化与工作区依赖管理;不适用于单包项目、非 JS monorepo 或没有构建步骤的项目。注意:不要用 && 串联 turbo 任务,应在 turbo.json 中用 dependsOn 声明;^build 仅对已在 package.json 声明的 workspace:* 依赖生效;环境变量须写入 env 才能正确命中缓存;脚本与 CI 中应使用 turbo run <task>,turbo <task> 简写仅用于交互。