版本号对比
semver 规则比较两个版本号并解释原因,附版本列表一键排序。
【哪里错了】两个版本号均为空 【为什么】没有可比较的内容。 【怎么改】输入形如 1.2.3、v2.0.1 的版本号。
原因:没有可比较的内容。
建议:输入形如 1.2.3、v2.0.1 的版本号。
使用说明
这个工具解决什么问题
「1.10 和 1.9 哪个大」看似常识问题,按字符串排序却会得出错误答案,无数排序 bug 与选型误判由此而生。这个工具按 semver 2.0.0 规则比较两个版本号,给出结论之外,更给出逐段对照表和一句话解释——错要错得明白,对要对得有据。
核心能力
两两对比:结论 + 逐段对照 + 中文解释。预发布链:alpha/beta/rc 排序规则完整实现。列表排序:升序降序,非法行容错。宽松解析:v 前缀、省略段、构建元数据全兼容。
使用建议
排查「版本排序不对」的 bug 时,把两个版本贴进来对照解释,确认是字符串比较的锅;选型时对候选版本列表排个序,预发布版本自然沉底;发布新版本前核对版本号递增是否符合 semver 约定。
排序稳定性说明:版本号相同的行保持原有先后顺序(稳定排序),重复版本不会被打乱。
常见问题
为什么 1.10 大于 1.9?
版本号按「数字」逐段比较,不是按字符串逐字符比较。次版本号位置上是数字 10 和数字 9,10 > 9,一票定胜负。按字符串比较时「1.10」反而小于「1.9」(字符 '1' < '9'),这是很多排序 bug 的根源——也是本工具要讲清楚的第一件事。
1.0.0-alpha、1.0.0-beta、1.0.0 谁大谁小?
按 semver 规则:1.0.0-alpha < 1.0.0-alpha.1 < 1.0.0-beta < 1.0.0-rc.1 < 1.0.0。核心规则是「没有预发布标识的版本高于有预发布的」;预发布标识之间,数字比大小、字母比字典序、数字小于字母、集合短的小于集合长的。工具会按这套规则逐段对照。
+build.5 这样的构建元数据影响比较吗?
不影响。semver 规定构建元数据仅作标注,不参与版本优先级:1.0.0+build.1 与 1.0.0+build.999 判定为等价。工具会在等价结论里注明这一口径。
版本列表排序支持什么格式?
每行一个版本号,支持 v 前缀(v1.2.0)、省略段(1.2 视同 1.2.0)、预发布与构建元数据。无法识别的行不会中断排序,而是单独列出并说明原因,混合格式的历史版本列表也能一次排清。