为何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
相关产品推荐
相关产品推荐

