turborepo
monorepo与multirepo
monorepo,一个仓库下管理多个项目
集中式仓库管理: 优点: 1. 仓库统一,方便代码的复用与管理 2. 环境统一,方便依赖的管理与构建 3. 流程统一,开发流程容易一致 缺点: 仓库统一,体积庞大,不便于扩展
multirepo,多个仓库,分别存储项目
分散式仓库管理: 适用于分布式团队,庞大的项目 优点: 1. 仓库分散,独立管理,易于扩展 2. 环境分散,每个项目可使用不同的工具、技术与流程,灵活性强 缺点: 1. 仓库分散,代码的复用性低,管理复杂 2. 环境分散,依赖管理更加复杂
turborepo
基于umi的智能构建系统
本质上是接管了package.json中的指令,并生成task之间的依赖链接
特点
缓存机制——对任务的结果和日志进行缓存
对task,即输入进行评估并hash,hash值为文件夹名称; task结束后,对output,即输出保存到hash文件夹下;
并行处理——利用所有可用CPU处理指令
使用
核心配置文件:turbo.json
1. 声明pipeline 2. 声明dependsOn前置条件
核心配置:pipeline
通过pipeline声明workspace的task和task dependency
核心配置项:dependsOn 任务依赖
执行该task的前置条件
核心配置项:outputs 缓存约定
缓存输出目录 以!开头为exclude