Files
bun.sh/docs/api/semver.md
Claude Bot 15285da36c docs: fix writing guideline violations
Updates documentation to follow writing guidelines by:
- Converting passive voice to active voice
- Removing subjective words (easy, simple, just)
- Clarifying ambiguous "this" references
- Using second person voice consistently
- Breaking up overly complex sentences
- Expanding contractions for clarity

Improves readability and consistency across 14 documentation files.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-13 00:35:44 +00:00

1.9 KiB

Bun implements a semantic versioning API which can be used to compare versions and determine if a version is compatible with another range of versions. The versions and ranges are designed to be compatible with node-semver, which npm clients use.

It's about 20x faster than node-semver.

Benchmark

Currently, this API provides two functions :

Bun.semver.satisfies(version: string, range: string): boolean

Returns true if version satisfies range, otherwise false.

Example:

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

If range is invalid, it returns false. If version is invalid, it returns false.

Bun.semver.order(versionA: string, versionB: string): 0 | 1 | -1

Returns 0 if versionA and versionB are equal, 1 if versionA is greater than versionB, and -1 if versionA is less than versionB.

Example:

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);

If you need other semver functions, feel free to open an issue or pull request.