背景
作为一个前端研发,在进行npm包管理时,如果有多个npm包,每个npm包都单独建一个单独的git仓库,管理起来很繁琐而且git仓库太多,版本管理也会很混乱,此时使用monorepo多包架构对npm公共包进行管理尤为重要,lerna就是一个多包管理工具。
像前端比较普遍使用的语法转换工具babel,就是用lerna进行的多包管理。
lerna的版本管理
fix mode
lerna默认的版本管理是fix mode模式,所有子包的版本都是统一的,使用lerna init
可以创建一个monorepo
项目,通过lerna version
可以来更新版本,通过lerna publish
可以发布对应更新的npm
包。
independent mode
如果不希望子包的版本统一,创建项目可以使用lerna init --independent
,此时每一个子包更新,都可以对单独的子包进行版本更新。
lerna常用命令
lerna init
lerna项目初始化,首先需要npm install lerna -g
来全局安装lerna
,然后通过lerna init
初始化一个lerna
项目
举个例子:
// 创建文件夹
mkdir my-monorepo && cd my-monorepo
// 初始化lerna项目
lerna init
// 此时会初始化一个新的lerna项目,里面有packages目录,可以在该目录下创建对应子包
lerna create xxx
lerna create
使用lerna
来创建子包,你想在刚初始化的lerna
项目下创建一个js-sdk
的子包,可以通过lerna create js-sdk
命令来创建。
lerna add
给对应子包添加依赖,比如:lerna add module-1 packages/js-sdk
,就可以给js-sdk
的子包添加依赖
lerna boostrap
安装所有子包的node_modules
依赖
lerna clean
删除所有子包的node_modules
依赖
lerna version
更新lerna
的所有子包版本,并且push
的git remote
lerna publish
发布之前lerna
更新的子包,publish
到npmjs
上
总结
因为最近有用lerna
做多包管理,今天简单记录了一下lerna
的基础用法,使用lerna
进行npm
包的管理真的特别方便,强烈推荐各个研发团队的npm
公共库使用lerna
来管理,后面有空再记录一下使用lerna
过程中的一些注意事项和有意思的用法吧。
今天开通了掘金专栏,以后尽量要多学习多总结。