语义化版本计算器

输入一个版本号,即可看到它的各个部分、它与另一个版本的先后顺序、下一次升级的结果,以及它是否符合某个 npm 范围。页面遵循 SemVer 2.0.0 规则,以及 node-semver 的范围语法。

免费 在浏览器中运行 核对于2026年11月10日星期二

例如1.4.0。可选择加上 -预发布 和 +构建 部分。

用于按先后顺序比较的另一个版本。留空则不做比较。

要增加一的部分。它之后的各部分会回到0。

npm 范围,例如 ^1.3.0、~1.2或 >=1.2.0 <2.0.0。留空则不做检查。

结果

升级后的版本 — 您所选升级之后的版本。
先后顺序 — 按 SemVer 的优先级,两个版本中哪一个排在前面。
范围检查 — 该版本是否符合此范围。
版本的各部分

范围的含义

此工具在您的浏览器中运行。您输入的内容不会发送给我们。

使用方法

  1. 输入版本号,例如1.4.0;如需比较,可在与此版本比较中输入另一个版本。
  2. 选择升级,查看下一个版本。若选择预发布版本升级,请在预发布名称中给出名称。
  3. 在范围中输入范围,检查版本是否符合;阅读范围的含义,了解范围中每一部分的意思。
  4. 根据所需的答案,查看升级后的版本、先后顺序和范围检查。

版本如何排序

SemVer 2.0.0 把主版本号、次版本号和修订号作为数字比较。带预发布标签的版本排在同一版本号的正式版本之前。预发布标识逐个比较:数字按数值比较,文本按 ASCII 顺序比较,数字排在文本之前。+ 之后的构建元数据不计入比较。

  • 规范中的示例顺序:1.0.0-alpha、1.0.0-alpha.1、1.0.0-alpha.beta、1.0.0-beta、1.0.0-beta.2、1.0.0-beta.11、1.0.0-rc.1、1.0.0。
  • 开头的 v,例如 v1.4.0,可以接受,它不属于版本号的一部分。

升级如何运作

主版本号升级会增加第一个数字,并将另外两个数字设为0。次版本号或修订号升级对其所在的部分做同样的处理。仍是预发布的版本,若升级本身就会得到正式版,则会去掉标签:与 node-semver 一样,1.0.0-alpha 经主版本号升级后变为1.0.0。预发布升级会以您给出的名称开始下一个修订版,例如1.4.1-beta.0;或者把现有预发布的最后一个数字加一,例如 beta.1 变为 beta.2。

范围如何理解

范围语法遵循 node-semver(npm 所用的包)及其README 中的语法说明。每种写法代表若干比较符:^1.3.0表示 >=1.3.0 <2.0.0-0,~1.2.3表示 >=1.2.3 <1.3.0-0,1.2.x 表示 >=1.2.0 <1.3.0-0。同一组中的比较符必须全部成立。以 || 连接的各组是可选项;空组接受任何版本,与 * 相同。

预发布版本与范围

预发布版本1.5.0-beta.1 只有在其所在的组中有一个比较符指向同样的1.5.0并带有预发布标签时,才符合范围。因此,未完成的版本默认不会进入范围,正如 node-semver 的README 所说明的。本页面的检查遵循这一规则。

计算示例:1.4.0的次版本号升级,以及 ^1.3.0 || 2.x

版本1.4.0高于1.4.0-beta.2,因为正式版高于它的预发布版本。次版本号升级得到1.5.0。范围 ^1.3.0 || 2.x 读作 >=1.3.0 <2.0.0-0或 >=2.0.0 <3.0.0-0,而1.4.0符合第一组。

输入 结果
将1.4.0与1.4.0-beta.2 比较 1.4.0高于1.4.0-beta.2。
1.4.0的次版本号升级 1.5.0
1.4.0是否符合 ^1.3.0 || 2.x 1.4.0符合 ^1.3.0 || 2.x。

常见问题

1.0.0+build.1 与1.0.0是同一个版本吗?

就排序和范围而言,是的。+ 之后的构建元数据不计入 SemVer 的优先级,因此两个版本在排序中的位置相同。页面仍会显示构建信息,以便您看到它。

为什么1.4.0-beta.2 低于1.4.0?

预发布版本尚不稳定,可能达不到其版本号所承诺的兼容性,因此 SemVer 把它排在版本号相同的正式版之前。所以1.4.0-beta.2 排在1.4.0之前,而1.4.0排在1.4.1之前。

^1.3.0是否接受2.0.0?

不接受。插入号范围(^)保留最左边的非零数字,因此 ^1.3.0表示不低于1.3.0且低于2.0.0。若希望接受第二个主版本,请像示例那样同时写上 || 2.x。

~1.2与 ^1.2有什么区别?

波浪号范围 ~1.2表示 >=1.2.0 <1.3.0-0,因此接受1.2.9之类的修订版改动,拒绝1.3.0。插入号范围 ^1.2表示 >=1.2.0 <2.0.0-0,因此还接受1.3.0和1.9.9,但不接受2.0.0。

为什么范围会排除1.5.0-beta.1?

除非有比较符以预发布标签指明相同的版本,例如 >=1.5.0-beta.0,否则预发布版本会被排除在外。node-semver 做出这一选择,是因为预发布版本变化很快,可能导致故障。

我的版本号会被发送到服务器吗?

不会。版本号、范围和比较都在您的浏览器中读取和检查,您输入的任何内容都不会被保存。

资料来源

数据和文字最近核对于2026年11月10日星期二。

我们使用必要的 Cookie 来运行网站。经您同意后,Google 还会使用广告 Cookie 展示个性化广告。如果您拒绝,仍会看到广告,但广告不会个性化。