Semver 计算器
在你的浏览器中解析、比较、范围检查、递增并强制转换语义化版本。你键入的版本留在你的设备上。
你键入的版本和范围在浏览器本地求值,绝不会上传。
需要一个快速的唯一 id?试试 UUID 生成器。
关于 Semver 计算器
这款 semver 计算器是一套语义化版本(SemVer)工具箱,能应对你与版本号打交道的一切。把像 1.2.3-beta.1+build.42 这样的版本解析成它的 major、minor、patch、预发布和构建元数据;比较两个版本,看哪个更新、以及它们在哪一级有差异;检查某个版本是否满足像 ^1.2.3、~1.2、1.x 或 >=1.0.0 <2.0.0 这样的 npm 范围;按 major、minor、patch 或任意预发布步进递增一个版本;并把像 v1.2 这样宽松的字符串强制转换成一个干净的 semver。它专为每天都要推敲依赖范围的开发者、包作者和发布工程师而打造。由 npm 所用的同一个 semver 库驱动,每一次计算都在你的浏览器中运行,因此你键入的版本留在你的设备上。
功能特性
- 将一个版本解析为 major、minor、patch、预发布标识符和构建元数据
- 比较两个版本并查看其关系(A > B、A = B、A < B)以及差异级别
- 检查某个版本是否满足像 ^1.2.3、~1.2、1.x 或 >=1.0.0 <2.0.0 这样的范围
- 预览若干示例版本,看它们对你输入的范围是通过还是不通过
- 按 major、minor、patch、premajor、preminor、prepatch 或 prerelease 递增
- 将像 v1.2 或 1.2.3.4 这样宽松的字符串强制转换成一个有效的 semver
- 实时校验输入,当版本或范围畸形时给出清晰提示
- 一键复制任意结果字段
如何使用 Semver 计算器
- 选择一种模式:解析、比较、范围、递增或强制转换。
- 键入一个版本(并根据模式键入第二个版本或一个范围)。
- 在输入下方的信息行和徽章中读取实时结果。
- 复制你需要的值,例如升级后的版本或差异级别。
示例
输入
version: 1.5.0
range: ^1.2.3
输出
1.5.0 satisfies ^1.2.3 ✓
1.6.0 → pass 2.0.0 → fail
脱字号范围 ^1.2.3 允许直至(但不包括)下一个 major(2.0.0)的任何版本。
常见错误与故障排除
- 「解析」说某个版本无效,尽管它看起来没问题。 — semver 需要全部三个部分。请用 1.2.0 而非 1.2,并把预发布/构建放在连字符/加号之后,例如 1.2.3-rc.1+build.5。
- 像 1.2 或 ^1.2 这样的范围表现得与你预期不同。 — 1.2 被当作 1.2.x,而 ^1.2 允许直至下一个 major。请用「范围」模式的示例版本来确认究竟什么会通过。
- 递增到预发布产生了 1.2.4-0,而非从相同的 patch 起步。 — 从稳定的 1.2.3 出发,一次预发布升级会先移动到下一个 patch(1.2.4-0)。请用 premajor/preminor/prepatch 来控制递增哪一部分。
- 强制转换丢弃了你输入的一部分,例如 1.2.3.4 变成了 1.2.3。 — 强制转换会找到第一个三数字序列并忽略其余部分,因此第四段或末尾文本是有意被丢弃的。
常见问题
- ^1.2.3 范围允许什么?
- 脱字号范围 ^1.2.3 允许任何不改变最左侧非零数字的版本,因此它匹配从 1.2.3 直至(但不包括)2.0.0。对于 0.x 版本,规则收紧:^0.2.3 允许从 0.2.3 直至 0.3.0。
- 预发布版本与稳定发布相比如何比较?
- 预发布的优先级低于其关联的发布,因此 1.0.0-rc.1 小于 1.0.0。预发布逐字段比较:标识符会被排序,数值标识符排在更长的或字母数字的标识符之下。
- ~1.2 和 ^1.2 有什么区别?
- 波浪号 ~1.2 允许 1.2 范围内的 patch 级变更(>=1.2.0 <1.3.0),而脱字号 ^1.2 允许直至下一个 major 的 minor 和 patch 变更(>=1.2.0 <2.0.0)。请用「范围」模式查看示例版本通过或不通过。
- 这款 semver 计算器如何处理构建元数据?
- 加号之后的构建元数据(例如 +build.42)会被解析并显示,但在比较优先级时会被忽略,因此 1.0.0+a 和 1.0.0+b 被视为相等的版本。
- 强制转换一个版本是做什么的?
- 强制转换会通过尽力找到第一个 major.minor.patch 序列,把一个宽松的字符串变成一个有效的 semver。于是 v1.2 变成 1.2.0,1.2.3.4 变成 1.2.3,release-3.1 变成 3.1.0;缺失的部分默认为零。
- 我可以按哪些发布类型递增?
- 你可以按 major、minor、patch、premajor、preminor、prepatch 或 prerelease 升级。这些 pre- 变体会在所选部分上开启一条预发布线,例如对 1.2.3 做 premajor 会得到 2.0.0-0。
相关工具
全部 ArrayKit 工具