语义化版本
使用 Bun 的语义化版本 API
Bun.semver 比较语义化版本,并检查某个版本是否与一系列版本兼容。版本和版本范围旨在与 npm 客户端使用的 node-semver 兼容。
Bun.semver 的速度约为 node-semver 的 20 倍。
该 API 提供两个函数:
Bun.semver.satisfies(version: string, range: string): boolean
如果 version 满足 range,则返回 true,否则返回 false。
示例:
TypeScript
import { semver } from "bun";
semver.satisfies("1.0.0", "^1.0.0"); // true
semver.satisfies("1.0.0", "^1.0.1"); // false
semver.satisfies("1.0.0", "~1.0.0"); // true
semver.satisfies("1.0.0", "~1.0.1"); // false
semver.satisfies("1.0.0", "1.0.0"); // true
semver.satisfies("1.0.0", "1.0.1"); // false
semver.satisfies("1.0.1", "1.0.0"); // false
semver.satisfies("1.0.0", "1.0.x"); // true
semver.satisfies("1.0.0", "1.x.x"); // true
semver.satisfies("1.0.0", "x.x.x"); // true
semver.satisfies("1.0.0", "1.0.0 - 2.0.0"); // true
semver.satisfies("1.0.0", "1.0.0 - 1.0.1"); // true
如果 version 无效,或者任一参数包含非 ASCII 字符,satisfies 会返回 false。Bun 会忽略无法解析的 range 部分。没有可解析部分的 range 等同于 *。
Bun.semver.order(versionA: string, versionB: string): 0 | 1 | -1
当 versionA 和 versionB 相等时返回 0,当 versionA 大于 versionB 时返回 1,当 versionA 小于 versionB 时返回 -1。
示例:
TypeScript
import { semver } from "bun";
semver.order("1.0.0", "1.0.0"); // 0
semver.order("1.0.0", "1.0.1"); // -1
semver.order("1.0.1", "1.0.0"); // 1
const unsorted = ["1.0.0", "1.0.1", "1.0.0-alpha", "1.0.0-beta", "1.0.0-rc"];
unsorted.sort(semver.order); // ["1.0.0-alpha", "1.0.0-beta", "1.0.0-rc", "1.0.0", "1.0.1"]
console.log(unsorted);
如果你需要其他 semver 函数,请提交 issue 或 pull request。