使用lerna构建monorepo
monorepo是什么?
monorepo就是在一个git repository里面管理多个packages或者项目
在实际开发使用中,在哪些场景下可能你会想要使用这种代码管理的方式呢?
例如,你们团队是一个以全栈开发为目标的团队,可以将前后端的项目放在一个repository里面进行管理
又例如,如果你是想使用微服务的,无论是后端微服务还是前端微服务(Single-SPA)之类的,你就可以在一个repository里面管理多个相关的项目
Lerna
monorepo是一种代码管理的概念,有很多工具都可以帮助你去实现,这里介绍的是Lerna
那么Lerna是什么呢?
官方解释是:
Lerna is a tool that optimizes the workflow around managing multi-package repositories with git and npm.
Lerna在提供了一些对多个package进行操作的命令之外,还提供了一些和对项目发布工作流程的一些支持。
注意:我们这里使用的lerna版本的3
初始化项目
要从一个新项目开始还是从已有项目出发,都可以使用lerna去创建monorepo的开发模式
lerna提供了两种方式去管理项目,一种是Fixed/Locked mode (default),另一种是Independent mode
区别就是,Fixed/Locked mode的版本控制是整一个repository作为一个整体的,而Independent mode则每个package的版本控制是独立的
我们这里介绍的是Independent mode的形式
执行下面命令对lerna进行初始化
npx lerna init --independent
会生成一个lerna.json
的文件,这就是lerna的配置文件,内容如下
{
"packages": [
"packages/*"
]