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

为何lerna version默认所有包已变更?GitHub Action发布问题

解决Lerna Version在CI中误更新所有未变更包的问题

问题现象

在GitHub Action中执行Lerna版本更新时,仅修改了@mosiure/pkgA,但lerna version却更新了所有包的版本,日志中明确显示:

lerna info Assuming all packages changed

根因分析

GitHub Action默认的actions/checkout@v4仅拉取最新的单次提交(默认fetch-depth: 1),而Lerna需要通过对比Git历史提交记录来判断哪些包有变更。缺少完整历史的情况下,Lerna无法识别具体变更的包,只能默认所有包都有修改。

解决方案

修改Checkout步骤,配置拉取完整的Git历史:

- name: Checkout
  uses: actions/checkout@v4
  with:
    fetch-depth: 0  # 拉取全部Git提交历史

修改后,Lerna就能通过对比历史提交,准确识别出仅@mosiure/pkgA有变更,只会更新该包的版本,其他未变更包不会被处理。

额外验证

确认你的Lerna版本模式为独立版本(日志中lerna info versioning independent已验证),该模式下Lerna会单独管理每个包的版本,符合你的需求。当前使用的lerna version --conventional-commits --preid beta --yes参数无需调整。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 01:22:11