standard-version统计feat提交异常:4个功能仅升级至1.1.0而非1.4.0求助
standard-version 版本升级不符合预期的原因及解决办法
核心原因:standard-version 并非按 feat 提交数量累加版本号
standard-version 遵循 语义化版本(SemVer) 规范,其版本升级逻辑是根据提交类型的级别而非提交数量来判断:
fix类型提交:升级补丁版本(版本号第三位,如1.0.3 → 1.0.4)feat类型提交:升级小版本(版本号第二位,如1.0.3 → 1.1.0)- 包含
BREAKING CHANGE的提交(无论类型):升级大版本(版本号第一位,如1.0.3 → 2.0.0)
你提交的4条 feat 属于同一级别的提交类型,工具会将其视为一次小版本升级的触发条件,而非4次独立升级,因此最终版本从 1.0.3 升级到 1.1.0 是符合工具默认规则的,并非异常。
自定义版本升级逻辑的两种方案
如果需要按你的预期实现版本号累加,可通过以下方式调整:
1. 配置自定义版本规则
在项目根目录创建 .versionrc 或 .versionrc.json 配置文件,通过 releaseRules 指定 feat 类型对应补丁版本升级:
{ "releaseRules": [ { "type": "feat", "release": "patch" } ] }
配置后,所有 feat 提交会触发补丁版本升级,4条 feat 提交会让版本从 1.0.3 直接升级到 1.0.7(工具会统计所有符合规则的提交,一次性完成对应次数的版本累加)。
2. 手动指定目标版本
若需要精确控制到 1.4.0,可在执行 release 命令时手动指定版本号:
npm run release -- --release-as 1.4.0
手动指定目标版本比多次相对升级更直接高效。
内容的提问来源于stack exchange,提问作者Otávio Reis Perkles
相关产品推荐
相关产品推荐

