release-please-action 在 Single Repo 和 Monorepo 中的特别食用指南
介绍
release-please-action 是一个 GitHub App 和命令行工具,用于自动化管理项目的版本发布流程。它能自动检测代码仓库中的变更,根据预设的规则创建和更新版本标签、生成版本说明并发布到 GitHub Releases。这对于频繁发布和维护开源项目尤其有用,能够显著减少版本管理的手动工作,提高开发效率。
开始
在根目录创建以下两个文件:
release-please-config.json
:配置 release-please 命令如何执行.release-please-manifest.json
:配置 component 版本信息
Single Repo
// release-please-config.json
{
"$schema": "https://raw.githubusercontent.com/googleapis/release-please/main/schemas/config.json",
"release-type": "node",
"include-component-in-tag": false,
"packages": {
".": {}
}
}
include-component-in-tag
配置了 packages 之后,默认会给标签上添加组件(即包名),例如 my-package-v12.34.56
,但因为该 Monorepo 里只有一个 package,所以版本标签的前缀可以省略,即为正常的版本号,例如 v12.34.56
packages
使用 packages
键名表示需要版本管理的 package 所在的路径。使用 .
表示根目录所在的 package。
Monorepo 里只有一个 package
// release-please-config.json
{
"$schema": "https://raw.githubusercontent.com/googleapis/release-please/main/schemas/config.json",
"release-type": "node",
"include-component-in-tag": false,
"packages": {
"path/to/only-one": {}
}
}
include-component-in-tag
配置了 packages 之后,默认会给标签上添加组件(即包名),例如 my-package-v12.34.56
,但因为该 Monorepo 里只有一个 package,所以版本标签的前缀可以省略,即为正常的版本号,例如 v12.34.56
packages
使用 packages
键名表示需要版本管理的 package 所在的路径。
Monorepo 里有两个及以上的 package
// release-please-config.json
{
"$schema": "https://raw.githubusercontent.com/googleapis/release-please/main/schemas/config.json",
"release-type": "node",
"group-pull-request-title-pattern": "chore(${branch}): release",
"packages": {
"path/to/one": {},
"path/to/two": {},
},
"plugins": ["node-workspace"]
}
group-pull-request-title-pattern
必须指定此配置,否则会出现解析失败的 bug。
packages
使用 packages
键名表示需要版本管理的 package 所在的路径。
node-workspace
建议使用 node-workspace
插件,工程内部的本地依赖发生变化时,其自身也会递增一个 patch 版本。例如:
- packages
- core@12.34.56 -> 依赖了本地 helpers 包
- helpers@12.34.56
本次只变更了 helpers 包,helpers@12.34.56 升级为 helpers@12.35.00,那么 core 包也会受影响,其版本号会自动从 core@12.34.56 升级为 core@12.34.57。即结果为:
- packages
- core@12.34.57 -> 依赖了本地 helpers 包
- helpers@12.35.00