SuperAPI AI 工具集

turborepo

通用与其它

查看项目

更新于 10-15 19:57

技能介绍

用途:以 Turborepo 加 pnpm workspace 组织 monorepo,统一使用 pnpm 并只提交 pnpm-lock.yaml。Turborepo 更新较快,配置以官方文档为准:https://turborepo.dev/docs ,turbo.json 参考 https://turborepo.dev/docs/reference/configuration 。

结构:根目录含 pnpm-workspace.yaml、turbo.json、package.json,apps/ 放可部署应用,packages/ 放共享库与配置,两者职责不混用,不做嵌套包。包名用 @<org>/ 前缀,内部包设 "private": true,定义 exports,共享 tsconfig 放 packages/tsconfig/ 供继承,内部依赖用 workspace:*。建议在 packages 下放 log、error、prompt、env、db 等职责包,调用方不重复实现。

用法:不手写 package.json,用 pnpm init、pnpm create <template> 生成;依赖用命令管理,如 pnpm add -D -w turbo typescript、pnpm add --filter @<org>/dashboard zod、pnpm add --filter @<org>/dashboard --workspace @<org>/log、pnpm update/remove --filter。仅对 name、private、exports、scripts 等做最小手工编辑。不全局安装 turbo,用 pnpm exec turbo 或根 devDependency。

turbo.json:v2 起任务键为 tasks(旧名 pipeline)。示例定义 build 的 dependsOn ["^build"] 与 outputs,lint、test、dev(cache:false、persistent:true);outputs、inputs、env 需准确,否则缓存误命中或失效。默认采用 JIT 编译,仅在明确要求时改为 tsc 输出 dist。

非 JavaScript:Cargo、Go、Python 可挂到同一任务图。Rust/Python 按缓存单位放 package.json,scripts 调用各语言工具链,并在 turbo.json 写 inputs/outputs;Go 为 experimental 原生支持,需 futureFlags.experimentalGoWorkspaces 与 go.work。注意与 Cargo 自身增量缓存的双重问题。

限制:Go 支持为实验性,行为可能变化;资料未提供具体版本兼容、性能数据与收费信息。