VersionUtil 版本号工具类
功能概述
VersionUtil 是一个完整的语义化版本(SemVer)处理工具类,提供版本号验证、比较、范围匹配和版本号解析等功能,完全遵循 Semantic Versioning 2.0.0 规范。
核心功能
1. 版本号验证
VersionUtil.isValid('1.0.0'); // true
VersionUtil.isValid('v2.3.4-beta'); // true
VersionUtil.isValid('1.0'); // false
2. 版本比较
VersionUtil.compare('1.2.3', '1.2.4'); // -1 (小于)
VersionUtil.compare('2.0.0', '1.9.9'); // 1 (大于)
VersionUtil.compare('1.0.0', '1.0.0'); // 0 (等于)
3. 版本范围匹配
VersionUtil.satisfies('1.2.3', '^1.0.0'); // true
VersionUtil.satisfies('2.0.0', '~1.3.0'); // false
4. 版本号解析
VersionUtil.getMajor('1.2.3'); // 1
VersionUtil.getMinor('v1.2.3'); // 2
VersionUtil.getPatch('1.2.3-beta'); // 3
VersionUtil.getPrerelease('1.0.0-alpha.1'); // "alpha.1"
完整 API 文档
静态方法
| 方法 | 参数 | 返回值 | 说明 |
|---|---|---|---|
| isValid(version) | string | boolean | 验证版本号格式有效性 |
| compare(v1, v2) | string, string | number | 比较两个版本号 |
| satisfies(version, range) | string, string | boolean | 检查版本是否满足范围 |
| getMajor(version) | string | number | 获取主版本号 |
| getMinor(version) | string | number | 获取次版本号 |
| getPatch(version) | string | number | 获取修订号 |
| getPrerelease(version) | string | string \| null |
获取预发布标识 |
| getBuildMetadata(version) | string | string \| null |
获取构建元数据 |
使用示例
基本验证
if (!VersionUtil.isValid(currentVersion)) {
throw new Error('无效的版本号格式');
}
版本升级检查
if (VersionUtil.compare(latestVersion, currentVersion) > 0) {
console.log('有新版本可用');
}
依赖版本检查
const requiredRange = '^1.2.0';
if (!VersionUtil.satisfies(installedVersion, requiredRange)) {
console.error(`需要版本 ${requiredRange},当前安装 ${installedVersion}`);
}
版本号解析
const version = '2.5.8-beta.1+20240315';
console.log(`主版本: ${VersionUtil.getMajor(version)}`);
console.log(`预发布: ${VersionUtil.getPrerelease(version)}`);
支持的版本范围语法
操作符 示例 说明
| 操作符 | 示例 | 说明 |
|---|---|---|
| > | >1.0.0 | 大于 |
| >= | >=1.0.0 | 大于等于 |
| < | <2.0.0 | 小于 |
| <= | <=2.0.0 | 小于等于 |
| =/== | =1.2.3 | 精确匹配 |
| ^ | ^1.2.3 | 兼容版本 (不修改最左非零数字) |
| ~ | ~1.2.3 | 近似版本 (只修改最后一位) |
注意事项
-
版本格式
-
必须符合 major.minor.patch[-pre][+build] 格式
-
前缀处理
-
自动忽略版本号前的 v 前缀
-
错误处理
-
无效版本号会抛出异常
-
范围匹配
-
多条件用空格分隔,如 >=1.0.0 <2.0.0