Skip to content

Bun はセマンティックバージョニング API を実装しており、バージョンの比較や、あるバージョンが他のバージョン範囲と互換性があるかどうかを判定するために使用できます。バージョンと範囲の設計は、npm クライアントで使用される node-semver と互換性があります。

node-semver より約 20 倍高速です。

現在、この API は 2 つの関数を提供しています:

Bun.semver.satisfies(version: string, range: string): boolean

versionrange を満たす場合は 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 が等しい場合は 0versionAversionB より大きい場合は 1versionAversionB より小さい場合は -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 by www.bunjs.com.cn 編集