Lerna: npm多包管理工具

2,760 阅读2分钟

背景

作为一个前端研发,在进行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的所有子包版本,并且pushgit remote

lerna publish

发布之前lerna更新的子包,publishnpmjs

总结

因为最近有用lerna做多包管理,今天简单记录了一下lerna的基础用法,使用lerna进行npm包的管理真的特别方便,强烈推荐各个研发团队的npm公共库使用lerna来管理,后面有空再记录一下使用lerna过程中的一些注意事项和有意思的用法吧。

今天开通了掘金专栏,以后尽量要多学习多总结。