Bun implémente une API de versionnage sémantique qui peut être utilisée pour comparer des versions et déterminer si une version est compatible avec une autre plage de versions. Les versions et les plages sont conçues pour être compatibles avec node-semver, qui est utilisé par les clients npm.
C'est environ 20 fois plus rapide que node-semver.
Actuellement, cette API fournit deux fonctions :
Bun.semver.satisfies(version: string, range: string): boolean
Retourne true si version satisfait range, sinon false.
Exemple :
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"); // trueSi range est invalide, cela retourne false. Si version est invalide, cela retourne false.
Bun.semver.order(versionA: string, versionB: string): 0 | 1 | -1
Retourne 0 si versionA et versionB sont égaux, 1 si versionA est supérieur à versionB, et -1 si versionA est inférieur à versionB.
Exemple :
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);Si vous avez besoin d'autres fonctions semver, n'hésitez pas à ouvrir une issue ou une pull request.