Bun

Semver

Bun 實作了語意版本控制 API,可用於比較版本並判斷版本是否與其他版本的範圍相容。這些版本和範圍設計為與 npm 客戶端所使用的 `node-semver` 相容。

它的速度比 `node-semver` 快約 20 倍。

Benchmark

目前,此 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);

如果您需要其他 semver 函式,歡迎開啟問題或提出プル要求。