NsNe / blog

4 stars 0 forks source link

lerna 初体验 #10

Open NsNe opened 4 years ago

NsNe commented 4 years ago

在产生一个解决方案时,不可避免的会产生多个 npm 包,以适配不同的用户群体,而这些包有可能互相之间又有依赖,管理起来,比较复杂,lerna 可以很容易的帮助我们管理多包

lerna 优劣

优势:

劣势:

lerna 初始化

lerna init

修改 lerna.json

version 为 independent 表示各个子包独立管理版本

{
  "packages": [
    "packages/*"
  ],
  "version": "independent",
  "command": {
    "bootstrap": {
      "npmClientArgs": ["--hoist"]
    }
  }
}

可以使用 lerna link convert 将依赖提取到根,类似 yarn workspace

安装依赖

$ npm i    # 安装项目全局依赖
$ lerna bootstrap    # 安装所有子模块的依赖
$ lerna add {module} --scope={package}    # 给某个模块添加一个依赖
$ lerna run start --scope={package}    # 运行某个模块

举例

$ # 运行所有子模块
$ lerna run start
$ # 运行 antd 模块,注意 scope 后为包名,而非文件名
$ lerna run start --scope antd

$ # 添加 --stream 参数,在终端打印运行日志信息
$ lerna run start --scope antd --stream

卸载依赖

lerna exec -- <command> [..args] # 在所有包中运行该命令
//例子
lerna exec --scope=antd npm uninstall webpack # 将 antd 包下的 webpack 卸载

删除安装依赖

lerna clean

查看包是否发生了变化

lerna updated/diff

查看本地所有包列表

lerna list

发布前查看哪些包发生了变化

lerna changed

lerna 发包

lerna publish
lerna version  # 只把包提交到 git , 并不发布到 npm

lerna 重新发包

lerna publish from-git
lerna publish from-package