为什么需要版本号比较
依赖升级、发版、写 ^/~ 范围时,经常要判断「1.2.0 比 1.10.0 新还是旧」。人眼容易被小数点骗——1.10.0 实际比 1.2.0 新,但按字符串排会反过来。语义化版本(SemVer)有明确的比较规则,本工具帮你不靠肉眼做对。
本工具比较两个版本号,输出「A 更新 / B 更新 / 相等」,并遵循 SemVer 2.0.0 的预发布标签规则。
概念与公式
SemVer 格式:主版本号.次版本号.修订号-预发布标签+构建元数据,例如 2.13.0-rc.1+build5。
比较优先级(核心规则):
- 先比 主 → 次 → 修订 三个数字(按数值,不是字符串);
- 数字相同再看预发布标签:有预发布的版本低于同号的正式版(
1.0.0-rc.1<1.0.0); - 预发布标签之间按点分段比较,数字段按数值、非数字段按 ASCII;
- 构建元数据(
+xxx)不参与优先级比较。
公式化:compare(A,B) 返回 -1 / 0 / 1。
细分场景
- 升级决策:确认新版本是否真的新于当前。
- 范围校验:验证
>=1.2.0 <2.0.0是否覆盖某版本。 - 发布排序:把一堆 tag 按正确顺序排。
怎么用本工具
在两个输入框分别填版本号 A、B,结果即时显示关系(含逐项拆解:主/次/修/预发布)。支持带预发布标签和构建元数据的完整写法。
常见场景与实例
例:数字陷阱
1.2.0 vs 1.10.0 → B 更新(10 > 2,数值比较而非字符串)。
例:预发布
1.0.0-rc.1 vs 1.0.0 → B 更新(预发布低于正式版)。
隐私说明
全程浏览器本地计算,不联网、不上传你输入的版本号。