单体仓库
规则
- Turborepo用于任务编排——
turbo.json定义管道 - 在
package.json中声明工作区:"workspaces": ["apps/*", "packages/*"] - 共享包位于
packages/——UI组件、配置、类型定义 - 应用位于
apps/——web、API、移动端等 - 内部包使用
"main": "./src/index.ts"——无需构建步骤 turbo.json管道:定义dependsOn、outputs、cache- 共享TypeScript配置:
packages/config-typescript/由所有包继承 - 共享ESLint配置:
packages/config-eslint/
避免
- 在应用之间直接导入——使用共享包
- 不同包中使用不同版本的同一依赖——使用
pnpm覆盖 - 在turbo管道中遗漏
dependsOn——会导致构建结果过时 - 构建内部包——使用TypeScript路径别名或
main: ./src/index.ts