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

如何让semantic-release识别手动版本并自动更新NPM包版本?

解决semantic-release无法识别手动历史版本的问题

你当前的问题是semantic-release无法识别之前手动发布的版本记录,导致每次都试图将版本重置为1.0.0,以下是具体的解决方法:

方法一:补全GitHub仓库的历史Release标签

semantic-release默认通过GitHub的Release标签或NPM的版本记录来追溯历史版本,之前手动发布的版本如果没有在GitHub上创建对应标签,就会被判定为无历史发布记录。操作步骤:

  • 整理你之前手动发布过的所有版本号(例如0.1.0、0.2.3等)
  • 进入GitHub仓库的Releases页面,点击「Draft a new release」
  • 每个历史版本对应创建一个格式统一的标签(推荐用v{版本号},比如v0.2.3),填写基础的Release描述后发布
  • 如果本地已存在这些版本标签,执行git push origin --tags将标签推送到远程仓库

方法二:手动指定初始版本

如果不想补全历史Release,可以在semantic-release配置中直接指定最后一个手动发布的版本作为初始版本,让它基于该版本计算后续升级:
修改你的semantic-release配置文件(或package.json中的release字段),添加initialVersion字段:

{
  "branches": ["main", "master"],
  "initialVersion": "0.3.0", // 替换为你最后一个手动发布的版本号
  "plugins": [
    [
      "@semantic-release/commit-analyzer",
      {
        "preset": "conventionalcommits"
      }
    ],
    "@semantic-release/release-notes-generator",
    "@semantic-release/changelog",
    [
      "@semantic-release/npm",
      {
        "npmPublish": false
      }
    ],
    [
      "@semantic-release/github",
      {
        "assets": [
          "CHANGELOG.md",
          "dist",
          "package.json"
        ]
      }
    ],
    [
      "@semantic-release/git",
      {
        "message": "chore(release): ${nextRelease.version} [skip ci]\n\n${nextRelease.notes}"
      }
    ]
  ]
}

额外检查项

  • 确认GITHUB_TOKEN拥有读取仓库标签和Releases的权限(默认GitHub Actions提供的GITHUB_TOKEN已包含该权限)
  • 确保你的提交信息符合conventionalcommits规范,否则semantic-release无法正确判断版本升级类型
  • 你的GitHub Actions流程顺序正确:先执行semantic-release更新版本,再执行npm publish发布包,当前流程无需调整

内容的提问来源于stack exchange,提问作者Stretch0

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 22:45:37