← 返回工具箱

Semver 版本比较

SEMVER · 开发辅助

语义化版本比较与批量排序:解析 prerelease/build 元数据,判断 ^ ~ >= 等范围是否命中,依赖升级不再靠猜。

双版本比较
vs
批量排序(每行一个版本)
范围判定
是否满足
遵循 semver.org:主.次.补丁[-先行版本][+构建元数据];先行版本低于正式版,点分标识符数字按数值、数字小于非数字比较;构建元数据不参与优先级。范围支持 ^(锁定主版本,0 系锁次版本)、~(锁定次版本)、>= > <= < = 与 1.2.x 通配。

>_ 使用指南 · GUIDE

语义化版本(semver.org)的规则细节比直觉多:先行版本低于正式版、点分标识符数字按数值比较、数字小于非数字、构建元数据不参与优先级。这个工具把 1.2.3 与 1.3.0-rc.1 谁先谁后、^1.2.3 到底放行哪些版本,全部按规范算给你看。

典型步骤:

  1. 比较两个版本:顶部输入两个版本号,中间给出 < = > 关系,含先行版本时并列展示其标识符
  2. 批量排序:左下面板每行一个版本(可混入 v 前缀与 prerelease),输出升序列表,非法行沉底并标记
  3. 范围判定:右下输入版本与范围(^1.2.3、~1.2.3、>=2.0.0、1.2.x),即时给出命中与否
  4. 核对元数据:解析结果严格区分 prerelease(参与比较)与 build(不参与),排查「为什么这两个版本相等」时先看这里

>_ 常见问题 · FAQ

Q1 · ^1.2.3 允许升到 2.0.0 吗?

不允许。^1.2.3 表示 >=1.2.3 <2.0.0——主版本锁定。0 系主版本有特殊规则(0.x 本身就不稳定):^0.2.3 锁定次版本,即 >=0.2.3 <0.3.0;^0.0.3 则精确等于 0.0.3。~1.2.3 更保守,锁定次版本:>=1.2.3 <1.3.0。

Q2 · 1.0.0-alpha、1.0.0-alpha.1、1.0.0-beta 怎么排序?

升序为 1.0.0-alpha < 1.0.0-alpha.1 < 1.0.0-beta < 1.0.0。规则:先行版本低于正式版;点分标识符逐段比,纯数字段按数值比;数字段小于非数字段(所以 alpha.1 > alpha);前缀完全相同时标识符更多的一方更大。

Q3 · build 元数据(+build.5)影响比较吗?

不影响。1.2.3+build.1 与 1.2.3+build.9 按 semver 规范相等——构建元数据只作信息标注,不参与优先级。工具在解析结果里单独展示 build 字段,CI 里靠它区分产物、靠前者比较版本。

Q4 · v1.2.3 的 v 前缀合法吗?

输入时兼容:v1.2.3 会自动剥离前缀后解析(Git tag 惯例)。但要注意 semver 规范本体不含 v 前缀,写入 package.json 等语义字段时应使用裸版本号。

Q5 · 为什么 01.2.3 不是合法版本?

semver 规范禁止前导零(01、1.02 都非法),避免与八进制字面量混淆。工具按规范拒绝解析而不是猜测,排序面板会把这类行沉底标 # ✗,方便一眼定位脏数据。

嵌入代码

把下面的代码复制到你的网页,即可将本工具嵌入为 iframe(自动隐藏导航与页脚)。

高度px
此工具在你的浏览器本地运行,输入内容不会上传。按 Ctrl K 可随时切换到其他工具。