TEXT LAB / LIVESemVer 比较加载中
SemVer 比较 - 文本工具 · 萤炬工具箱 · 工具说明与使用指南
SemVer 比较 - 文本工具 · 萤炬工具箱
SemVer 比较按 npm 采用的语义化版本规则判断两个版本号谁更新,包含 prerelease 段(如 1.0.0-beta.2)的正确排序,build 元数据(加号后面的部分)按规范忽略。排查依赖版本冲突、确认某个修复到底进了哪个版本、写升级脚本前核对比较逻辑时用得上。遵循 SemVer 2.0.0 与 npm…
SemVer 比较按 npm 采用的语义化版本规则判断两个版本号谁更新,包含 prerelease 段(如 1.0.0-beta.2)的正确排序,build 元数据(加号后面的部分)按规范忽略。排查依赖版本冲突、确认某个修复到底进了哪个版本、写升级脚本前核对比较逻辑时用得上。
使用步骤
- 在两个输入框分别填入版本号。
- 查看比较结果(更大、更小或相等)。
- 带 prerelease 的版本重点看排序是否符合预期。
- 按需换版本继续比较。
功能与限制
- 遵循 SemVer 2.0.0 与 npm 的比较语义。
- 忽略 build 元数据;不解析 ^ ~ 等版本范围表达式。
常见问题
- 1.0.0 和 1.0.0-beta.1 哪个更新?
- 1.0.0 更新。带 prerelease 标记的版本永远小于对应的正式版本,因为它是通往该版本路上的预发布。这一点常被直觉搞反。
- beta.2 和 beta.10 怎么排?
- prerelease 里的纯数字段按数值比较,所以 beta.10 大于 beta.2。但如果写成 beta10 这种非规范形式,就退化成字符串比较,结果会反过来。
- build 元数据为什么不参与比较?
- SemVer 规范明确规定加号后面的 build 元数据不影响版本优先级,它只是构建标识(如 commit hash)。所以 1.0.0+a 和 1.0.0+b 视为相等。
- 这里比的和 ^ ~ 这类范围符是一回事吗?
- 不是。这里比较两个具体版本的大小;^1.2.0 这类是范围表达式,描述「哪些版本可接受」,需要另外的范围匹配语义。