安装
全局安装 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
注意版本号维护问题