Bun はセマンティックバージョニング API を実装しており、バージョンの比較や、あるバージョンが他のバージョン範囲と互換性があるかどうかを判定するために使用できます。バージョンと範囲の設計は、npm クライアントで使用される node-semver と互換性があります。
node-semver より約 20 倍高速です。
現在、この API は 2 つの関数を提供しています:
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"); // truerange が無効な場合、false を返します。version が無効な場合、false を返します。
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 関数が必要な場合は、イシューまたはプルリクエストを自由に開いてください。