Semantische Versionsnummern nach SemVer vergleichen
Erfahren Sie, welche von zwei Versionen wirklich vorne liegt: 1.0.0-alpha.1 ist niedriger als 1.0.0-alpha.beta, weil eine Zahlenkennung immer unter einem Wort rangiert, und 2.10.0 schlägt korrekt 2.9.0. Kostenlos in Ihrem Browser.
- Kostenlos
- Läuft in Ihrem Browser
- Ohne Anmeldung
- Ihre Daten bleiben auf Ihrem Gerät
Im Browser ausführen – kostenlos
Rechenbeispiel
- Erste Version
- 1.0.0-alpha.1
- Zweite Version
- 1.0.0-alpha.beta
- Vergleich
- less
- Rangfolge
- -1
- Höhere Version
- 1.0.0-alpha.beta
Vergleichen Sie zwei semantische Versionsnummern, ohne sich auf lexikalische Sortierung, Gleitkommakonvertierung oder paketmanagerspezifische Abkürzungen zu verlassen. Diese Funktion prüft beide Eingaben nach Semantic Versioning 2.0.0 und wendet anschließend die offiziellen Vorrangregeln auf Haupt-, Neben-, Patch- und Vorabkomponenten an. Sie meldet, ob die erste Version einen niedrigeren, höheren oder gleichen Vorrang gegenüber der zweiten hat, und ignoriert Build-Metadaten ordnungsgemäß. Ungültige oder unvollständige Versionsangaben erzeugen einen eindeutigen Eingabefehler statt einer irreführenden Reihenfolge.
Vergleichen Sie Versionen nach den Regeln echter Software-Releases
Ein gewöhnlicher Zeichenfolgenvergleich liefert bei vielen Versionsnummern ein falsches Ergebnis. Eine lexikalische Sortierung kann beispielsweise 2.10.0 vor 2.9.0 einordnen, weil sie das Zeichen 1 mit 9 vergleicht. Eine einfache Zahlenkonvertierung wiederum beseitigt die getrennte Bedeutung der Haupt-, Neben- und Patchpositionen.
Dieser semantische Vergleicher analysiert jede vorgeschriebene Position einzeln und vergleicht sie von links nach rechts. Er weist auch lockere Formen zurück, etwa eine fehlende Patchkomponente, ein vorangestelltes v oder eine numerische Kernkennung mit führender Null. Diese strenge Prüfung ist in Bereitstellungsskripten, Paketregistern, Aktualisierungsdiensten und CI-Prüfungen wertvoll, weil fehlerhafte Daten nicht unbemerkt als gültiges Release durchgehen.
Übermitteln Sie die erste und zweite Version genau in der veröffentlichten Schreibweise. Das Ergebnis enthält einen vorzeichenbehafteten Vorrangwert: minus eins bedeutet, dass die erste niedriger ist, null bezeichnet Gleichrangigkeit und eins bedeutet, dass die erste höher ist. Ein beschreibendes Vergleichsfeld macht dieselbe Antwort für Oberflächen und Workflow-Bedingungen leicht nutzbar.
Verstehen Sie Vorab-Reihenfolge und Build-Metadaten
Bei Vorabkennungen versagen vereinfachte Vergleicher besonders häufig. Ein Release mit Vorabsuffix hat einen niedrigeren Vorrang als dieselbe Haupt-, Neben- und Patchversion ohne diesen Zusatz. Deshalb ist 1.0.0-rc.1 niedriger als 1.0.0.
Sind beide Versionen Vorabversionen, werden ihre Kennungen der Reihe nach verglichen. Numerische Kennungen werden nach ihrem Zahlenwert, nichtnumerische nach lexikalischer ASCII-Reihenfolge verglichen; eine numerische Kennung hat immer einen niedrigeren Vorrang als eine nichtnumerische. Stimmen alle gemeinsamen Kennungen überein, hat die Version mit weiteren Kennungen den höheren Vorrang.
Diese Regeln bilden die übliche Entwicklung von alpha über beta bis zu Release Candidates ab, ohne bestimmten Wörtern eine Sonderbedeutung zu geben. Build-Metadaten nach einem Pluszeichen werden geprüft, aber bewusst vom Vorrang ausgeschlossen. Daher gelten 1.0.0+linux und 1.0.0+windows trotz unterschiedlicher Zeichenfolgen als gleichrangig.
Nutzen Sie strenge Vergleiche sicher in Automatisierungen
Ein deterministisches Vergleichsergebnis kann in größeren Systemen als kleiner, zuverlässiger Entscheidungspunkt dienen. Eine Release-Pipeline kann verlangen, dass die vorgeschlagene Version höher als die bereitgestellte ist. Ein Aktualisierungsprogramm kann entscheiden, ob ein heruntergeladenes Manifest ein Upgrade, ein Downgrade oder einen gleichrangigen Build beschreibt.
Eine Testsuite kann die kanonische Folge von Vorabversionen abdecken und ungültige Kennungen vor der Veröffentlichung von Artefakten zurückweisen. Die Implementierung stellt keine Netzwerkanfragen, liest keine Uhrzeit und verwendet keine Zufallswerte; gleiche Eingaben erzeugen stets dieselbe Ausgabe. Numerische Kennungen werden als Ziffernfolgen verglichen und nicht in JavaScript-Zahlen umgewandelt.
Dadurch bleibt die Reihenfolge selbst dann korrekt, wenn eine gültige Kennung den sicheren Ganzzahlbereich überschreitet. Die Eingabelänge ist begrenzt, damit die Verarbeitung überschaubar bleibt.
Anwendungsfälle
Schützen Sie eine Release-Pipeline
Bestätigen Sie vor der Veröffentlichung, dass die vorgeschlagene Paketversion einen höheren Vorrang als die bereitgestellte Version hat.
Bewerten Sie Aktualisierungsmanifeste
Ermitteln Sie ohne Einfluss der Metadaten, ob ein entferntes Release ein Upgrade, Downgrade oder einen gleichrangigen Build darstellt.
Prüfen Sie Vorabfolgen
Testen Sie die Reihenfolge von alpha-, beta-, Kandidaten- und Endversionen und weisen Sie fehlerhafte Semantic-Versioning-Angaben zurück.
Häufige Fragen
Was bedeutet der Vergleichswert?
Ein Vorrang von -1 bedeutet, dass die erste Version niedriger ist, 0 bezeichnet Gleichrangigkeit und 1 bedeutet, dass die erste höher ist.
Beeinflussen Build-Metadaten das Ergebnis?
Nein. Sie werden geprüft, sind nach Semantic Versioning aber vom Vorrangvergleich ausgeschlossen.
Ist eine Vorabversion niedriger als das zugehörige endgültige Release?
Ja. Bei identischen Haupt-, Neben- und Patchnummern hat eine Version mit Vorabkennungen einen niedrigeren Vorrang als die Endversion.
Sind führende Nullen zulässig?
Numerische Haupt-, Neben-, Patch- und Vorabkennungen dürfen keine führenden Nullen enthalten; die einzelne Ziffer null ist erlaubt.
Darf ich ein führendes v verwenden oder die Patchnummer auslassen?
Nein. Die Eingaben müssen strikte Semantic-Versioning-2.0.0-Zeichenfolgen wie 1.2.3 oder 1.2.3-rc.1 sein.
Warum sortiert ein einfacher Textvergleich Versionen falsch?
Weil er Zeichen statt Zahlen vergleicht: So landet 2.10.0 vor 2.9.0, da die 1 mit der 9 verglichen wird. Hier wird jede Stelle einzeln als Zahl geprüft, von links nach rechts, und Build-Zusätze bleiben außen vor.
Verwandte Tools
Für Entwickler — API-Zugang
Alles auf dieser Seite ist auch per API verfügbar. Dieser Abschnitt richtet sich an Teams, die es in ihre eigenen Systeme einbinden möchten; alle anderen nutzen einfach das Tool oben.
Endpunkt
Authentifizierung per Bearer-Token. Ein einziger POST stellt die Aufgabe in die Warteschlange; das Ergebnis erhalten Sie per Webhook oder über einen signierten Link.
Aufruf aus Ihrem Stack
curl -X POST https://api.kit.forhosting.com/dev2/semver-compare \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"first_version":"2.1.0-rc.1","second_version":"2.1.0"}'const res = await fetch("https://api.kit.forhosting.com/dev2/semver-compare", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"first_version": "2.1.0-rc.1",
"second_version": "2.1.0"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev2/semver-compare",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"first_version": "2.1.0-rc.1",
"second_version": "2.1.0"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev2/semver-compare", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"first_version":"2.1.0-rc.1","second_version":"2.1.0"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"first_version":"2.1.0-rc.1","second_version":"2.1.0"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev2/semver-compare", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Beispiel-Anfrage
{
"first_version": "2.1.0-rc.1",
"second_version": "2.1.0"
}Beispiel-Antwort
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev2.semver_compare",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}Die API arbeitet asynchron: Sie erhalten sofort eine task_id. Polling ist mit 1 Anfrage pro Sekunde erlaubt.
Preis
Der Preis steht auf der Seite – keine Tokens, keine Credits. Fehlgeschlagene Aufgaben werden nicht berechnet.
Limits
max_chars_per_version | 1024 |
Fehler
| HTTP | Code | Bedeutung |
|---|---|---|
401 | unauthorized | Der API-Schlüssel fehlt oder ist ungültig – prüfen Sie den Authorization-Header (Bearer). |
402 | insufficient_balance | Ihr Guthaben reicht für diese Aufgabe nicht aus – Aufladungen verfallen nicht. |
404 | unknown_type | Unbekannter Aufgabentyp – prüfen Sie das Feld „type“ gegen den Katalog. |
429 | rate_limited | Zu viele Anfragen – warten Sie kurz; Polling ist mit 1 Anfrage pro Sekunde erlaubt. |
Technische Hinweise
Verstehen Sie Vorab-Reihenfolge und Build-Metadaten
Bei gleichem Vorrang ist greater_version null, weil keine der Eingaben die andere übertrifft.
Nutzen Sie strenge Vergleiche sicher in Automatisierungen
Verwenden Sie für eine interaktive Prüfung die Browser-Ausführung oder rufen Sie die API für $0.002 auf, wenn der Vergleich zu einem wiederholbaren Ablauf gehört. Behandeln Sie invalid_input als zu korrigierenden Datenqualitätsfehler.
Technische Fragen
Wie hoch sind die Kosten?
Der API-Preis beträgt $0.002 pro Vergleich. Für interaktive Prüfungen steht die Browser-Ausführung bereit.