SemVer 范围版本筛选
按 npm SemVer 范围筛选严格版本列表,按优先级排序并选出最高匹配版本。
- 1添加输入
- 2调整设置
- 3获取结果
工具输入和文件在当前浏览器处理,不会上传。
开始之前
使用已知版本列表审查依赖约束,查看哪些版本符合范围、预发布选项如何改变结果,以及最终选中的版本原文。
如何使用
- 每行输入一个严格版本,并填写准确的 npm 范围。
- 选择是否包含预发布版本,查看匹配行和最高版本。
- 下载报告,并确认接收端包管理器使用相同范围与预发布策略。
支持范围与限制
一个 UTF-8 版本列表文件或粘贴列表,加范围文本,合计不超过 1 MiB。最多 10,000 个非空版本行,每个版本最多 256 字符,范围最多 4,096 字符。跳过空行并保留原始行号,所选文件优先。
版本必须是严格 major.minor.patch,可带预发布和构建元数据。拒绝 v/= 前缀、前导零和两侧空格。主次修订版本及纯数字预发布标识须在 JavaScript 安全整数范围内,更大的数字预发布标识会明确拒绝。
范围遵循锁定的 node-semver 7.7.3,支持比较器组、||、^、~、连字符和 X 范围;空范围表示 *。默认排除未被范围明确允许的预发布元组,可通过可见选项扩大预发布匹配。不查询注册表、dist-tag 或发布状态。
构建元数据保留在输出中,但不影响版本优先级。同优先级按输入顺序排列;maxSatisfying 在最高版本并列时返回最先输入的原文。预览显示前 200 行,JSON/CSV 保留全部;表格保护只影响 CSV。
操作示例
示例输入
1.2.0+build.2 1.3.0-beta.1 1.2.0+build.1 2.0.0
示例参数
{"secondary": "^1.2.0", "params": {"includePrerelease": false}}示例输出
{
"range": "^1.2.0",
"normalizedRange": ">=1.2.0 <2.0.0-0",
"includePrerelease": false,
"maximum": "1.2.0+build.2",
"records": [
{
"version": "1.2.0+build.2",
"matches": true,
"sourceLine": 1
},
{
"version": "1.2.0+build.1",
"matches": true,
"sourceLine": 3
},
{
"version": "1.3.0-beta.1",
"matches": false,
"sourceLine": 2
},
{
"version": "2.0.0",
"matches": false,
"sourceLine": 4
}
]
}出现问题时
修正报告中的版本或范围,使用无前缀、无两侧空格的完整严格版本。列表过大时拆批;若纯数字预发布标识超出安全整数范围,应使用支持任意精度的 SemVer 实现。
常见问题
+build.2 比 +build.1 更高吗?
不会。构建元数据不参与 SemVer 优先级比较,工具保留原文和输入顺序。
为什么 1.3.0-beta.1 不符合 ^1.2.0?
npm 默认范围策略排除了这个预发布元组。启用预发布选项可查看扩大后的集合。
有效范围没有匹配版本会报错吗?
不会。结果明确显示匹配数为零,JSON 的 maximum 为 null。