跳转至

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 近似版本 (只修改最后一位)

注意事项

  1. 版本格式

  2. 必须符合 major.minor.patch[-pre][+build] 格式

  3. 前缀处理

  4. 自动忽略版本号前的 v 前缀

  5. 错误处理

  6. 无效版本号会抛出异常

  7. 范围匹配

  8. 多条件用空格分隔,如 >=1.0.0 <2.0.0