lerna
多个项目的代码放在在同一存储库中这种开发策略称之为 Monorepo
yarn workspace
依赖树关系
yarn workspaces info
安装/删除依赖模块
注意 -- 是json的name名字不是文件夹名字
# packageA 安装 axios
yarn workspace packageA add axios
# packageA 移除 axios
yarn workspace packageA remove axios
# root package 安装 commitizen
yarn add -W -D commitizen
# root package 移除 commitizen
yarn remove -W commitizen
运行
# 运行packageA 的dev命令
yarn workspace packageA dev
# 这里是在每个工作区运行 run build 命令
yarn workspaces run build
"useWorkspaces": true,
"private": true,
实践
需求:各package独立打包:有公用打包配置的能力
yarn install
yarn workspace cli add cli-shared-utils
yarn workspaces add lodash
yarn add -W -D typescript
lerna clean
lerna run --stream --sort build
升级与发布
升级与发布
两种模式:
Independent mode:结合Git,检查文件变动,只发布有改动的packge。(
设置方式1: 创建项目的时候 可以通过 lerna init --independent 命令,
启用独立模式管理软件包。
设置方式2: 修改 lerna.json 的 version 字段,
修改为 independent, 用来开启独立模式)
Fixed/Locked mode(默认):把工程当作一个整体来对待。每次发布packges,
都是全量发布,无论是否修改
lerna version
lerna publish