Skip to content

Bun 實現了語義化版本控制 API,可用於比較版本並確定某個版本是否與另一個版本范圍兼容。版本和范圍的設計與 node-semver 兼容,後者被 npm 客戶端使用。

它的速度比 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

如果 range 無效,則返回 false。如果 version 無效,則返回 false。

Bun.semver.order(versionA: string, versionB: string): 0 | 1 | -1

如果 versionAversionB 相等則返回 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 函數,請隨時提出問題或拉取請求。

Bun學習網由www.bunjs.com.cn整理維護