Bun 实现了一个语义版本 API,可用于比较版本并确定版本是否与其他版本范围兼容。这些版本和范围旨在与 npm 客户端使用的 `node-semver` 兼容。
它比 `node-semver` 快约 20 倍。
目前,此 API 是两个函数。
Bun.semver.satisfies(version: string, range: string): boolean
如果 `version` 满足 `range`,则返回 `true`,否则返回 `false`。
示例
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
如果 `range` 无效,则返回 false。如果 `version` 无效,则返回 false。
Bun.semver.order(versionA: string, versionB: string): 0 | 1 | -1
如果 `versionA` 和 `versionB` 相等,则返回 `0`;如果 `versionA` 大于 `versionB`,则返回 `1`;如果 `versionA` 小于 `versionB`,则返回 `-1`。
示例
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);
如果你需要其他语义版本函数,请随时打开一个问题或提交一个 pull request。