能否使用semantic-release发布prepatch、preminor、premajor预发布版本?
实现类似npm version prepatch的预发布版本递增逻辑
解决方案
要实现从正式版本直接递增patch并生成第一个rc预发布版本,后续仅递增rc序号的逻辑,可以借助@semantic-release/exec插件自定义版本计算规则,具体配置如下:
1. 依赖安装
首先安装所需插件和semver工具:
npm install --save-dev @semantic-release/exec semantic-release semver
2. 配置semantic-release
在项目根目录创建.release.js配置文件,写入以下内容:
module.exports = { branches: [ 'main', // 正式发布分支 { name: 'release', prerelease: 'rc' } // 预发布分支,通道名为rc ], plugins: [ '@semantic-release/commit-analyzer', '@semantic-release/release-notes-generator', // 自定义版本计算逻辑 [ '@semantic-release/exec', { calculateVersionCmd: ` if [[ "${lastRelease.version}" != *"-rc"* ]]; then # 从正式版本切换到预发布时,递增patch并生成第一个rc版本 echo "$(npx semver "${lastRelease.version}" -i patch)-rc.0" else # 已处于rc预发布阶段,仅递增rc序号 echo "$(npx semver "${lastRelease.version}" -i prerelease --preid rc)" fi ` } ], '@semantic-release/npm', '@semantic-release/git' ] };
3. 逻辑说明
- 当
release分支当前版本为正式版本(如1.0.0)时,执行semver "${lastRelease.version}" -i patch递增patch版本到1.0.1,再拼接-rc.0得到1.0.1-rc.0 - 当
release分支当前版本已为rc预发布版本(如1.0.1-rc.0)时,执行semver "${lastRelease.version}" -i prerelease --preid rc自动递增rc序号,得到1.0.1-rc.1、1.0.1-rc.2等 - 后续将
release分支合并到main分支时,semantic-release会自动发布正式版本1.0.1
内容的提问来源于stack exchange,提问作者Jordan
相关产品推荐
相关产品推荐

