首页 > 编程学习 > lerna笔记

lerna笔记

发布时间:2022/1/17 11:49:51

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, // 使用yarn workspaces
    "private": true, // 私有的,不会被发布,是管理整个项目,与要发布到npm的解耦

实践

需求:各package独立打包:有公用打包配置的能力
 //包安装、同时安装各个子包需要的依赖
 yarn install
 yarn workspace cli add cli-shared-utils
  //将cli-shared-utils作为cli的依赖进行安装
 yarn workspaces add lodash //给所有的package安装依赖:
 yarn add -W -D typescript //给root 安装公用的依赖
 //清理环境
 lerna clean //清理所有的node_modules
 //按顺序构建(各个package之间存在相互依赖,
 //如packageB只有在packageA构建完之后才能进行构建
 //,否则就会出错,需要按拓扑排序的规则进行构建)
lerna run --stream --sort build

升级与发布

升级与发布
两种模式:
Independent mode:结合Git,检查文件变动,只发布有改动的packge。(
设置方式1:	创建项目的时候 可以通过 lerna init --independent 命令,
	启用独立模式管理软件包。
设置方式2:	修改 lerna.json 的 version 字段,
	修改为 independent, 用来开启独立模式)

Fixed/Locked mode(默认):把工程当作一个整体来对待。每次发布packges,
都是全量发布,无论是否修改
//更新版本
//找出从上一个版本发布以来有过变更的 package
//提示开发者确定要发布的版本号
//将所有更新过的的 package 中的package.json的version字段更新
//将依赖更新过的 package 的 包中的依赖版本号更新
//更新 lerna.json 中的 version 字段
//根据commit信息自动生成该版本的CHANGELOG (配置conventionalCommits)
//提交上述修改,并打一个 tag
//推送到 git 仓库

lerna version //更新版本 

//发布新包
lerna publish  //包含了lerna version
Copyright © 2010-2022 ngui.cc 版权所有 |关于我们| 联系方式| 豫B2-20100000