开发实战指南

SemVer 范围:caret、tilde 与预发布版本

按数值比较版本,检查 npm 风格范围中的零主版本与预发布行为。

Nav Tools ·

版本不能按普通文本排序

SemVer 的主、次、补丁组件是数值,字典排序可能把 1.10.0 放在 1.9.0 前。

有效版本应使用 SemVer 解析器比较,构建元数据按规范不影响优先级。

1.9.0 < 1.10.0
1.2.3+build.1 and 1.2.3+build.2 have equal precedence.

caret 与 tilde 属于包范围规则

SemVer 定义版本,包管理器定义范围语法;node-semver 中 ~1.2.3 到 1.3.0 前,^1.2.3 到 2.0.0 前。

本站使用 node-semver 验证范围,其他生态的兼容版本运算符可能采用不同规则。

零主版本与预发布要特别注意

node-semver 的 ^0.2.3 限于 0.3.0 前,不能认为 caret 总允许新的次版本。

预发布在许多范围中默认被排除,除非范围接受相关预发布版本组,应检查实际候选版本。

^0.2.3: 0.2.9 accepted; 0.3.0 rejected
~1.2.3: 1.2.9 accepted; 1.3.0 rejected

范围不能证明真实兼容性

包可能违背声明的兼容承诺,范围命中仅回答版本是否符合指定语法。

升级时保留锁文件并执行必要集成检查,版本成员关系之外还需审查发布说明和运行时要求。

参考资料

← 开发实战指南