无需登录 数据私有 本地保存

语义版本范围匹配验证 - 检查依赖是否满足

15
0
0
0
版本范围匹配验证
批量版本验证
常见范围语法
^1.2.3 兼容版本 ≥1.2.3 且 <2.0.0-0
~1.2.3 近似版本 ≥1.2.3 且 <1.3.0-0
>=1.0.0 <2.0.0 范围区间 大于等于1.0.0且小于2.0.0
1.x1.* 通配符 ≥1.0.0 且 <2.0.0-0
1.2.3 - 2.3.4 连字符范围 ≥1.2.3 且 ≤2.3.4
* 任意版本 匹配所有版本
1.0.0 || 2.0.0 逻辑或 匹配1.0.0或2.0.0
⚠ ^0.x.y 特殊规则 ^0.2.3 → ≥0.2.3 <0.3.0
^0.0.3 → ≥0.0.3 <0.0.4
常见问题 (FAQ)
什么是语义版本控制(Semantic Versioning)?
语义版本控制(SemVer)是一种版本号规范,格式为 MAJOR.MINOR.PATCH(主版本.次版本.修订版本)。
MAJOR:不兼容的API修改时递增
MINOR:向下兼容的功能新增时递增
PATCH:向下兼容的问题修复时递增
此外还支持预发布标签(如 1.0.0-alpha.1)和构建元数据(如 1.0.0+build.123)。
版本范围中的 ^(插入号)和 ~(波浪号)有什么区别?
^(插入号/Caret):允许不改变最左边非零数字的变更。
^1.2.3 = ≥1.2.3 且 <2.0.0(允许minor和patch变更)
^0.2.3 = ≥0.2.3 且 <0.3.0(0.x版本只允许patch变更)
^0.0.3 = ≥0.0.3 且 <0.0.4(精确匹配)

~(波浪号/Tilde):允许patch级别的变更。
~1.2.3 = ≥1.2.3 且 <1.3.0
• 如果minor未指定,则允许minor变更:~1 = ≥1.0.0 且 <2.0.0
预发布版本(prerelease)在版本范围中如何匹配?
预发布版本(如 1.0.0-alpha2.0.0-beta.1)在semver比较中低于对应的正式版本。
例如:1.0.0-alpha < 1.0.0

在npm的版本范围匹配中,如果范围未明确包含prerelease标签(如 ^1.0.0),则通常不会匹配prerelease版本。如果范围指定了prerelease(如 ^1.0.0-alpha),则只匹配对应prerelease系列的版本。
通配符 *x 在版本范围中如何使用?
* 匹配任意版本,x 可作为通配符放在任意位置:
*""(空)→ 任意版本
1.x1.* → ≥1.0.0 且 <2.0.0
1.2.x1.2.* → ≥1.2.0 且 <1.3.0
通配符非常适合用于"允许该主版本下的所有更新"的场景。
连字符范围(hyphen ranges)如何使用?
连字符范围语法为 A - B,等价于 >=A <=B(注意右边界是包含的)。
1.2.3 - 2.3.4 → ≥1.2.3 且 ≤2.3.4
• 如果版本号不完整:1.2 - 2.3.4 → ≥1.2.0 且 ≤2.3.4
连字符范围提供了一个直观的区间表达方式。
|| 运算符在版本范围中如何使用?
|| 表示"逻辑或",用于组合多个独立的版本范围。只要版本号满足其中任意一个范围即视为匹配。
1.0.0 || 2.0.0 → 匹配1.0.0或2.0.0
^1.0.0 || ^3.0.0 → 匹配1.x或3.x系列
这在处理多个兼容版本分支时非常有用。
如何检查我的项目依赖是否满足版本要求?
使用本工具可以快速验证依赖版本是否满足要求:
1. 在版本范围中输入 package.json 中声明的依赖范围(如 ^2.1.0
2. 在版本号中输入已安装或待升级的版本号
3. 点击检查,即可看到是否匹配
也可使用批量验证功能,一次性检查多个候选版本,帮助选择最合适的依赖版本。