Bun реализует API семантического версионирования, который можно использовать для сравнения версий и определения совместимости версии с диапазоном версий. Версии и диапазоны разработаны для совместимости с node-semver, который используется клиентами npm.
Он примерно в 20 раз быстрее, чем node-semver.
В настоящее время этот API предоставляет две функции:
Bun.semver.satisfies(version: string, range: string): boolean
Возвращает true, если version удовлетворяет range, в противном случае 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
Возвращает 0, если versionA и versionB равны, 1, если versionA больше versionB, и -1, если versionA меньше versionB.
Пример:
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.