Skip to content

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