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

GitHub Action 中 Lerna publish 工作流未按预期运行问题求助

问题原因与解决方案

问题1:PR首次提交时发布所有包

原因

你在Release阶段拉取标签的命令为git fetch --depth=1 origin +refs/tags/*:refs/tags/*,仅拉取了1层深度的标签,无法获取master分支上最新的正式发布标签作为版本对比基准。
Lerna默认找不到上一次发布的基准标签时,就会触发Assuming all packages changed逻辑,全量发布所有包。第二次提交时,首次发布生成的PR专属预发布标签已经被推送到远程,拉取后可以作为对比基准,因此只会发布变更包。

解决方案

  • 修改Release阶段的标签拉取命令,去掉--depth=1限制,拉取全量标签:
git fetch origin --tags
  • 可以在lerna publish命令后追加--since master参数,强制指定和master分支的最新提交对比变更,避免无基准时全量发布。

问题2:版本号patch段固定为0,仅递增preid后缀数字

原因

你使用的--conventional-prerelease参数的默认逻辑为:同一预发布周期(即preid相同,均为pr{PR编号})内,仅递增预发布后缀的数字,不会重新根据提交计算major/minor/patch版本段。
首次生成预发布版本时,Lerna会根据提交类型计算得到目标版本(比如feat类型提交会升级minor版本,从1.0.4升级到1.1.0),之后同一PR内的后续发布都不会再调整前面的版本段,因此patch段会固定为0。

解决方案

  • 修改publish-branch命令,去掉--conventional-prerelease参数,替换为通用的--prerelease参数,保留conventionalCommits能力:
"publish-branch": "lerna publish --prerelease --exact --no-changelog --preid pr$NUMBER --dist-tag beta --pre-dist-tag beta --no-verify-access --yes"
  • 建议将Lerna从v3.20.2升级到v4及以上版本,旧版本的conventional预发布逻辑存在较多边界问题,新版本的版本计算逻辑更符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 08:15:02