如何在fixed/locked模式下避免仅版本号更新的发布?
解决Lerna-Lite固定模式下无变更仍发布版本的问题
当你在fixed/locked模式下使用Lerna-Lite,即便没有符合版本升级规则的Conventional Commits提交,执行lerna version或publish仍会生成新版本,这是工具的默认行为,但可以通过以下方法规避:
1. 结合约定式提交与文件过滤
执行版本命令时,启用--conventional-commits让工具识别符合规则的提交,同时用--ignore-changes过滤不影响代码逻辑的文件变更(比如文档、注释类文件):
lerna version --conventional-commits --ignore-changes "*.md" "*.txt" "docs/**/*"
只有包含feat(minor升级)、fix(patch升级)或BREAKING CHANGE(major升级)的提交才会触发版本更新,无关变更不会触发空版本发布。
2. 配置文件固化规则
把上述参数写到lerna.json里,避免每次重复输入:
{ "packages": ["packages/*"], "version": "fixed", "command": { "version": { "conventionalCommits": true, "ignoreChanges": ["*.md", "*.txt", "docs/**/*"] } } }
之后直接运行lerna version就会自动应用这些校验规则。
3. 前置校验提交内容
在执行发布前,手动检查最近的提交是否包含触发版本升级的类型:
# 检查最近一次提交是否属于版本变更类型 git log --pretty=format:"%s" -1 | grep -E "^(feat|fix|BREAKING CHANGE)"
如果没有匹配结果,直接跳过本次发布即可。也可以把这个逻辑写成脚本,集成到你的发布流程中做自动校验。
4. 临时跳过版本更新(特殊场景用)
如果只是想执行发布流程但不需要更新版本,可临时使用--no-git-tag-version参数跳过版本文件修改和Git标签创建:
lerna publish --no-git-tag-version
注意:这个方法不适合常规流程,仅用于临时需求。
内容的提问来源于stack exchange,提问作者Markus
相关产品推荐
相关产品推荐

