大项目管理
随着前端的不断发展,代码变得越来越繁杂,为方便管理,减小维护成本,也为了方便复用,大代码库被地划分为更小粒度的代码。那这些小代码库应该如何管理?大致有两类解决方案:
- multi reop 即一个包一个库
- 每个包都有独立的库管理,开发自由度高
- 调用时,要像第三方包一样被调用;
- 修改时,源代码要到被调用的库修改,然后由调用者修改调用方式
- monorepo 即一个仓库中管理所有包(小代码库)
- 所有代码由一个库管理,统一配置和组织方式
- 调用时,同目录调用
- 修改时,源代码的修改,改的作用通过调用的库显示出来,所以需要修改调用代码
- multi reop 即一个包一个库
lerna
monorepo 方式的一个工具库 lerna
安装
npm i lerna -g
初始化项目
lerna init
执行命令后会在当前目录下出现
一个
lerna.json
文件,配置 lerna:1
2
3
4
5
6{
"package":[
"packages/*"
],
"version":"0.0.0"
}一个标志为 npm 管理方式的
package.json
一个命名为 packages 空目录,在这里存放需要管理的包
处理各个包之间的依赖
lerna bootstrap
- 执行后自动下载和链接好各个包(通过查看各个包的 package.json 的 dependencies 属性,分辨是否是内置的包,内置的用 npm link 链接,外部的第三方用 npm i)
git commit 和发布包:
lerna publish
- 执行后自动打 tag,更新各个包的版本(默认情况下,无论有无更改都会改版本号)
- 因为是绑定了 git,所以一定要有远程 git 仓库才能成功
参考
npm 官宣:未来将支持 monorepo 特性,带来源码管理新姿势!
REPO STYLE WARS: MONO VS MULTI——>中文翻译
最后更新: 2021年07月16日 00:11
原始链接: https://idkhts.github.io/2021/01/19/monorepo%E5%92%8Clerna/