语义化版本号计算器
在线semver版本号计算器,支持版本升级计算(major/minor/patch/prerelease)、双版本比较、以及^和~两种npm range匹配判断,遵循semver.org规范。
免费在线工具
Loading…
使用说明
- 版本升级:输入当前版本号,选择升级类型(major/minor/patch/prerelease),点击“计算升级后版本”查看结果
- 版本比较:分别输入版本 A 和版本 B,点击“比较”查看哪个版本更新
- Range 匹配:输入一个具体版本号和 npm range 表达式(如 ^1.2.3 或 ~1.2.3),点击“判断”查看是否满足该 range
- 点击“加载示例版本号”可快速填充三个区域的示例数据查看效果
功能介绍
- 版本号合法性校验:严格遵循 semver.org 规范(major.minor.patch[-prerelease][+build])校验输入格式
- 四种升级类型:major(清零 minor/patch)、minor(清零 patch)、patch、prerelease,升级规则参考主流 semver 工具(如 npm version)的实际行为,包括“已处于目标预发布版本时不重复进位”等细节
- 版本比较:按 semver 优先级规则比较两个版本号,正式版本优先级高于同数字的预发布版本,预发布标识符逐段比较(数字标识符按数值比较,字母标识符按 ASCII 比较,纯数字标识符优先级低于含字母的标识符)
- Range 匹配判断(简化版):仅支持 ^(兼容更新)与 ~(补丁级更新)两种最常见前缀,以及不带前缀的精确匹配,不支持 >=、||、x 通配符等复杂组合表达式
使用场景
发布新版本前确定版本号
根据本次改动类型(新增不兼容API/新增功能/修复bug)快速计算出符合semver规范的下一个版本号
判断依赖包版本是否满足要求
检查 package.json 里锁定的具体版本号是否满足某个 ^ 或 ~ range 声明,排查依赖版本冲突问题
比较两个版本谁更新
在处理版本升级/回滚时,快速判断两个版本号的新旧关系,避免手动比较出错
学习理解semver预发布版本规则
通过实际输入不同的prerelease标识符组合,直观理解alpha/beta/rc等预发布版本的优先级比较规则
常见问题
工具支持哪些 range 语法?
目前只支持 npm range 中最常见的 ^(兼容更新,如 ^1.2.3)和 ~(补丁级更新,如 ~1.2.3)两种前缀,以及不带前缀的精确版本匹配,不支持 >=、<=、||组合、x 通配符等更复杂的 range 表达式。
prerelease 升级具体是怎么算的?
如果当前版本没有预发布标签,会先将 patch 位加 1 再附加 -0(如 1.2.3 → 1.2.4-0);如果已有预发布标签且末段是数字,则该数字加 1(如 1.2.4-0 → 1.2.4-1);如果末段不是数字,则追加 .0(如 1.2.4-alpha → 1.2.4-alpha.0)。
build元数据(+号后面的部分)参与版本比较吗?
不参与。根据semver.org规范,build元数据仅用于标识构建信息,不影响版本优先级比较,本工具的比较功能会忽略它。
为什么1.0.0-alpha比1.0.0的优先级低?
semver规范规定,带预发布标签的版本优先级低于相同数字的正式发布版本,因为预发布版本被视为尚未达到该正式版本的中间状态。