You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 11:45:28