Open NsNe opened 4 years ago
在产生一个解决方案时,不可避免的会产生多个 npm 包,以适配不同的用户群体,而这些包有可能互相之间又有依赖,管理起来,比较复杂,lerna 可以很容易的帮助我们管理多包
npm
lerna
优势:
劣势:
lerna init
version 为 independent 表示各个子包独立管理版本
{ "packages": [ "packages/*" ], "version": "independent", "command": { "bootstrap": { "npmClientArgs": ["--hoist"] } } }
可以使用 lerna link convert 将依赖提取到根,类似 yarn workspace
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 publish lerna version # 只把包提交到 git , 并不发布到 npm
lerna publish from-git lerna publish from-package
lerna 优劣
优势:
lerna
会帮你管理&发包劣势:
lerna 初始化
修改 lerna.json
version 为 independent 表示各个子包独立管理版本
可以使用
lerna link convert
将依赖提取到根,类似yarn workspace
安装依赖
举例
卸载依赖
删除安装依赖
查看包是否发生了变化
查看本地所有包列表
发布前查看哪些包发生了变化
lerna 发包
lerna 重新发包