安装
全局安装 lerna: npm install -g lerna
指令备查
| 指令 | 描述 |
|---|---|
| lerna bootstrap --hoist | 安装依赖 |
| lerna clean | 删除各个包下的node_modules |
| lerna init | 创建新的lerna库 |
| lerna list | 显示package列表 |
| lerna changed | 显示自上次relase tag以来有修改的包, 选项通 list |
| lerna dif | 显示自上次relase tag以来有修改的包的差异, 执行 git diff |
| lerna exec | 在每个包目录下执行任意命令 |
| lerna run | 执行每个包package.json中的脚本命令 |
| lerna add dt-ui --scope=brandowner | brandowner添加dt-ui作为依赖库使用 |
| lerna add axios --exact --scope=dt-ui | 增加第三方包依赖 |
| lerna add axios --dev --exact --scope=dt-ui | 增加第三方打包依赖 |
| lerna import | 引入package |
| lerna link | 链接互相引用的库 |
| lerna create loc | 新建项目 loc是创建位置,默认是packages |
| lerna publish | 发布 |
| lerna version --amend --no-private --yes | 更改自上次发布以来的包版本号 |
实战演练
-
初始化项目
创建 lerna-ui 空文件夹,初始化 lerna init:mkdir lerne-ui && cd lerne-ui && lerna init
修改lerna.json中的version配置为independent -
创建子项目
进入 packages 目录,执行
npx create-react-app ui-web --typescript
npx vue create ui-example -
提取共同依赖
执行lerna clean删除子项目的node_modules,然后执行命令lerna bootstrap --hoist。 -
yarn workspances 解决不同项目依赖不同版本号的问题**(验证未通过)**
在lerna.json中增加以下配置"npmClient": "yarn", // 指定 npmClent 为 yarn "useWorkspaces": true // 将 useWorkspaces 设置为 true在顶层
package.json中增加配置{ "workspaces":[ "packages/*" ] }增加了这个配置后 不再需要
lerna bootstrap来安装依赖了,可以直接使用yarn install进行依赖的安装。注意:yarn install无论在顶层运行还是在任意一个子项目运行效果都可以 -
启动子项目
笨方法:进入packages/子项目目录,执行yarn start
lerna 的方法:
在顶层package.json中进行配置script"scripts": { "web": "lerna exec --scope example-web -- yarn start", }在顶层
lerna.json中增加配置{ "npmClient": "true" } -
模块引用
在项目 example-web 中增加 ui-common 模块依赖:
lerna add ui-common --scope=example-web -
发布
lerna publish
注意版本号维护问题
