يطبق Bun واجهة برمجة تطبيقات للإصدارات الدلالية يمكن استخدامها لمقارنة الإصدارات وتحديد ما إذا كان الإصدار متوافقًا مع نطاق آخر من الإصدارات. تم تصميم الإصدارات والنطاقات لتكون متوافقة مع node-semver الذي تستخدمه عملاء npm.
أسرع بحوالي 20 مرة من node-semver.
حاليًا، توفر هذه الواجهة دالتين:
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 أخرى، فلا تتردد في فتح مشكلة أو طلب سحب.