Yuka js库的Version的range
模块可以用来匹配版本号。
range
模块暴露了一个Range
类,该类有一个接收version
字符串参数的构造函数,构造出来的实例可以通过test(version)
方法来检测传入的版本号是否匹配当前Range
实例。
import { Range } from 'yuka';
const anyVersion = new Range('*'); // 匹配所有版本
console.log(anyVersion.test('1.0.0')); // true
console.log(anyVersion.test('2.3.1-beta.3')); // true
const greaterThan = new Range('>1.0');
console.log(greaterThan.test('0.9.9')); // false
console.log(greaterThan.test('1.0.0')); // false
console.log(greaterThan.test('1.0.1')); // true
console.log(greaterThan.test('2.0.0')); // true
Range
类的构造函数可以接受一个version
字符串来构造一个版本号范围。范围字符串可以使用下列运算符进行组合。
=
: 精确匹配某个版本号。>
: 匹配所有更高版本号。>=
: 匹配所有更高或同等版本号。<
: 匹配所有更低版本号。<=
: 匹配所有更低或同等版本号。-
: 指定一个版本号区间。||
: 将两个版本号范围进行并集计算。范围字符串可以组成复合表达式。
1.0.0
精确匹配版本号 "1.0.0">1.0.0
匹配所有高于 "1.0.0" 的版本号>=1.0.0
匹配所有高于或等于 "1.0.0" 的版本号<1.0.0
匹配所有低于 "1.0.0" 的版本号<=1.0.0
匹配所有低于或等于 "1.0.0" 的版本号1.0.0 - 2.0.0
匹配所有介于 "1.0.0" 和 "2.0.0" 之间的版本号1.0.0 || >=2.0.0
匹配 "1.0.0" 以及高于等于 "2.0.0" 的版本号Yuka js库的range
模块可以处理一些特殊的符号。
x
, *
: 可以描述版本号中缺失的部分,例如 1.2.x
。-
: 可以描述范围区间,例如 1.2.3 - 1.3.0
。