开发实战指南
SemVer 范围:caret、tilde 与预发布版本
按数值比较版本,检查 npm 风格范围中的零主版本与预发布行为。
版本不能按普通文本排序
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范围不能证明真实兼容性
包可能违背声明的兼容承诺,范围命中仅回答版本是否符合指定语法。
升级时保留锁文件并执行必要集成检查,版本成员关系之外还需审查发布说明和运行时要求。