Monorepo实践之Lerna

131 阅读2分钟

文章主要包含:

一些工作中常用的命令。

Lerna管理项目,有哪些优缺点?

命令

lerna init

该命令用于创建(或更新当前lerna)一个用lerna管理的项目。

lerna create〈name〉

创建新的包,放置于根目录下的packages文件夹下。

lerna add <package>

安装依赖,可配置参数:

  • 单独安装到某个包:
lerna add <package> packages/name
// 或通过包名
lerna add <package> --scope=packageName
  • 指定依赖项添加方式
lerna add <package> --scope=packageName --dev/exact/peer

lerna bootstrap --ignore-prepublish

安装外部依赖并将本地有引用关系的包链接到一起。

lerna link

类似npm link,建立软件包的软链接。

lerna run <script>

执行包下的npm脚本,可单独指定执行某个包。

lerna run --scope packageFileName <script>

lerna exec -- <command>

可执行包下的任意指令。

lerna exec -- ls
// 指定单个包
lerna exec --scope packageFileName -- ls

lerna changed

查看存在变更的包。

lerna diff

查看包的变更内容。

lerna diff
// 指定单个包
lerna diff [packageName]

lerna version

更新有变更的包的版本号。

// patch-小版本,major-主版本,minor-次版本,pre*-内部测试版本,如从1.0.0跳到1.0.0-alpha.1
lerna version patch

lerna publish

发布

lerna list

列出有哪些包

优缺点

优点

  • 代码共享和复用,packages下的包都可互相共享代码,减少代码冗余。
  • 依赖管理,若是开发大型前端框架类项目,将所有的包需要的依赖都在项目根目录下进行管理,避免各包单独管理依赖时用到的相同依赖的版本不一致。
  • 统一的版本管理,通过简单的命令,完成版本号的更新。
  • 若是开发大型前端框架类项目,将其下所有模块内容集中到一起,方便开发和管理,若有更新,也更方便调试和进度协调。

缺点

  • 团队协作极易出现冲突,集中在一起开发,若是修改到公共代码或在某个包下引入的某些依赖不恰当,都可能引起冲突或阻塞。
  • 项目集中在一起,每次拉取仓库和拉取资源时间都较长,项目越大,所用本地资源也越大