SuperAPI AI 工具集

turborepo

通用与其它

查看项目

更新于 10-15 23:48

技能介绍

Turborepo 是面向 JavaScript/TypeScript monorepo 的构建系统,通过缓存任务输出并依据依赖图并行运行任务来加速构建。该技能用于配置和排查 Turborepo monorepo,涉及 turbo.json、任务流水线、dependsOn、缓存、过滤、受影响包与 CI 等。

核心原则:任务应定义在各包的 package.json 中,并在根 turbo.json 注册;根 package.json 只通过 turbo run <task> 委派,不承载任务逻辑,否则会破坏并行化。根任务(//#taskname)仅用于确实无法放入包内的罕见任务。写入代码(package.json、CI、脚本)时应始终使用 turbo run,简写 turbo <task> 仅用于人工或智能体在终端一次性输入。

主要能力与用法:用 dependsOn 定义任务依赖(^build 表示先构建依赖包,build 表示同包内先执行,pkg#task 指定某包任务);用 outputs 声明构建产物以启用缓存;用 env 与 inputs 让环境变量和 .env 变更触发缓存失效;用 --affected 只运行变更包及其依赖方,也可用 --filter 按包名、目录或依赖关系过滤;用 turbo watch 监听变更,persistent 与 interruptible 配置开发任务;用 turbo boundaries 检查架构边界;CI 可参考 GitHub Actions、Vercel 与远程缓存,并用 turbo-ignore 跳过无变更构建。

常见限制与反模式:不要在根 package.json 直接运行任务或用 && 串联 turbo 任务;不要用 prebuild 手动构建依赖,应先声明 workspace 依赖再依赖 ^build;避免过宽的 globalDependencies,可改用任务级 inputs 或 futureFlags.globalConfiguration 下的 global.inputs;不要用 --parallel 绕过依赖图;包级差异应使用包内 turbo.json(extends: ["//"])而非在根配置大量 package#task;inputs 中引用包外文件应使用 $TURBO_ROOT$ 而非 ../;产出文件的任务需正确声明 outputs,注意 tsc --noEmit 在 incremental 下仍会生成 .tsbuildinfo;根目录 .env 属反模式,应避免隐式耦合。资料未提供收费、价格与平台支持等细节。