執行環境套件管理器打包器測試執行器程式碼檢查格式化指南參考部落格意見回饋

語義化版本

使用 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。