AZ Tools

Semver 工具(解析、比较、版本号递增)

开发

用 npm、Cargo、Go modules 或任何包管理生态,都离不开盯着语义化版本字符串看——而把 1.10.0 错当成比 1.9.0 小、漏看 prerelease 标签,这类失误能耗掉好几个小时。本工具把两个版本拆成各组成(major、minor、patch、prerelease、build),按 semver.org 官方规范(包含 prerelease 顺序)比较,并为每个版本提供一键递增按钮。下方的范围展开器把最常见的 npm 范围语法(^1.2.3、~1.2.3、~1.2、用于不稳定 API 的 ^0.x.y)转换为显式的 ≥下界 <上界——遇到只接受比较运算符写法的工具时可直接复制使用。

Major1
Minor2
Patch3
Prerelease
Build
Major1
Minor2
Patch10
Prerelease
Build

比较

B 大于 A

匹配

≥ 1.2.3·< 2.0.0

使用方法

  1. 在两个输入(版本 A、版本 B)中各输入一个版本号;解析结果与比较结论实时更新。
  2. 点击任一版本下的递增按钮(Major / Minor / Patch / Prerelease)来推进版本——便于规划发布。
  3. 在范围展开器输入 ^1.2.3 或 ~1.2 这样的范围 → 显示上下界,用「复制」获取 ≥a.b.c <x.y.z 字符串。

常见问题

Prerelease 的排序怎么算?
按规范,带 prerelease 的版本(1.0.0-alpha)小于同号不带的(1.0.0)。Prerelease 内部从左到右比较各标识符——数字按数字比,字母数字按字典序比,相同位置上数字永远低于字母数字。所以 1.0.0-alpha < 1.0.0-alpha.1 < 1.0.0-alpha.beta < 1.0.0-beta < 1.0.0。
为什么 ^0.2.3 展开到 <0.3.0,不是 <1.0.0?
npm 的 caret 对 0.x.y 有特殊处理——pre-1.0 的 API 被视为不稳定,0.x 的 bump 被当作破坏性变更。所以 ^0.2.3 只匹配 0.2.x,^0.0.3 只精确匹配 0.0.3。这与 npm 本身行为一致。
Build 元数据会影响比较吗?
不会——规范规定 +build 仅作信息用途,比较时忽略。1.0.0+abc 与 1.0.0+xyz 相等。
这里支持哪些范围语法?
展开器支持 ^x[.y[.z]]、~x[.y[.z]] 以及单独的 x、x.y(分别按 ~x、~x.y 处理)。'>=1.0.0 <2.0.0' 这种组合范围和 '1.x' 这种通配符不展开——不过你仍可以分别解析每个版本。

相关工具