Monorepo
Monorepo 是一种项目代码管理方式,指单个仓库中管理多个项目,有助于简化代码共享、版本控制、构建和部署等方面的复杂性,并提供更好的可重用性和协作性
过往传统架构的问题?
- 多个项目独立,分属不同的仓库
- 技术栈独立
- 规范化,自动化配置等割裂
- 依赖管理,版本很难统一管理,项目之间的依赖,不好管理
- 部署也不好统一管理
pnpm/npm/yarn
npm和yarn可能存在的问题
- 幽灵依赖:存在依赖提升,某个项目使用的依赖,并没有在其 package.json 中声明,也可以直接使用
- 依赖冗余
turborepo
Vercel 团队开源的高性能构建代码仓库系统,允许开发者使用不同的构建系统
turborepo: 简单,非侵入式,npm下载量早就超过了lerna(缺少维护,使用复杂)、nx
- 构建任务并行进行,构建顺序交给开发者配置
- 通过缓存,减少构建时间
- 支持任务编排
https://ksh7.com/posts/pnpm-use-workspace/index.html#pnpm-workspace-yaml