— — — Semantische Versionen parsen, vergleichen und Bereichsprüfungen durchführen — unterstützt ^, ~, >=, <, x-Bereiche und ||.
Remote-URLs werden nicht abgerufen; fügen Sie Ihr JSON direkt ein.
— — — — — Semantic Versioning (SemVer) ist die major.minor.patch-Konvention, die die meisten Bibliotheken verwenden, um zu signalisieren, welche Art von Änderung ein Release enthält: ein Bugfix erhöht patch, abwärtskompatible Erweiterungen erhöhen minor, und ändernde Änderungen (Breaking Changes) erhöhen major. Fügen Sie ein Vorabversion-Tag (1.0.0-beta.1) oder Build-Metadaten (+exp.sha.1) hinzu, erhalten Sie die vollständige Grammatik, die auf semver.org 2.0.0 definiert ist.
Das Problem ist, dass „zwei Versionen vergleichen“ und „erfüllt diese Version meinen Abhängigkeitsbereich“ beim bloßen Draufschauen schnell falsch laufen. Ist 1.0.0 höher oder niedriger als 1.0.0-beta? (Höher — ein Release rangiert immer über seiner Vorabversion.) Erfüllt 1.2.3 das ^1.2.0? (Ja.) Erfüllt es ~1.2.0? (Ebenfalls ja, aber aus einem engeren Grund.) Diese Seite parst Versionen so, wie die Spezifikation sie definiert, zeigt Ihnen die Bestandteile, vergleicht zwei Versionen nach Präzedenz und beantwortet Bereichsabfragen mit derselben ^ / ~ / >= / || / Bindestrich-Syntax, die eine package.json verwendet — alles lokal, gegen die echten Regeln statt gegen eine Vermutung.
v oder = wird akzeptiert und entfernt; 1.2.3-beta.1+build.42 wird in seine Teile zerlegt.^1.2.0 || >=2.0.0 <3.0.0 — zwei ODER-Sätze, so wie echte Abhängigkeitsbereiche geschrieben werden. Unterstützte Syntax: ^ (Caret), ~ (Tilde), >= <= > < =, x / X / * Wildcards, partielle Versionen (1.2), - Bindestrichbereiche und || zum ODER-Verknüpfen von Sätzen.clean-Form und die aufgedröselten Felder major, minor, patch, prerelease und build. Eine ungültige Version wird rot mit einer Meldung.A < B, A = B oder A > B nach Präzedenz dar, plus die Änderung — die höchste Komponente, die sich geändert hat (major, minor, patch, prerelease oder build).major.minor.patch und dann die Vorabversions-Bezeichner, mit der Regel, dass eine Version ohne Vorabversion immer über einer mit Vorabversion rangiert. Numerische Bezeichner werden numerisch verglichen (beta.2 < beta.11); alphanumerische lexikalisch; und numerische rangieren stets unter alphanumerischen. Build-Metadaten werden geparst und angezeigt, beeinflussen aber nie die Präzedenz.^1.2.3 wird zu >=1.2.3 <2.0.0; ^0.2.3 wird zu >=0.2.3 <0.3.0; ^0.0.3 wird zu >=0.0.3 <0.0.4 — die „linkste Nicht-Null“-Regel des Carets. Tilde pinnt auf dieselbe Minor-Version: ~1.2.3 ist >=1.2.3 <1.3.0.||, Bindestrichen und Wildcards. ^1.0.0 || >=2.0.0 <3.0.0 (ODER aus zwei Sätzen), 1.2.0 - 1.5.0 (inklusiver Bindestrichbereich), 1.x / 1.2.* (Wildcard-Bereiche) werden alle geparst und geprüft.major.minor.patch trägt. Also erfüllt 1.5.0-rc.1 nicht ^1.2.0, aber es erfüllt ^1.5.0-rc.0 — passend zu wie echte Paketmanager zufällige Vorabversionen aus Ihren Release-Builds heraushalten.1.2.3 auf 2.0.0 major anzeigt, und 1.0.0 auf 1.0.0 mit geändertem Build zeigt build, selbst wenn die Präzedenz unverändert ist.v, ein führendes = und umgebende Leerzeichen werden toleriert, sodass Versionen, die aus einem Git-Tag oder einem Changelog kopiert wurden, ohne manuelle Bereinigung geparst werden.Mit den Standardwerten — A 1.2.3, B 2.0.0, Bereich ^1.2.0 || >=2.0.0 <3.0.0 — meldet die Seite:
A clean 1.2.3 (major 1, minor 2, patch 3)
B clean 2.0.0 (major 2, minor 0, patch 0)
Vergleich 1.2.3 < 2.0.0
Änderung major
Bereich A erfüllt B erfüllt
Beide Versionen erfüllen den Bereich, aber aus unterschiedlichen Gründen: A fällt in den ersten ODER-Satz (^1.2.0 → >=1.2.0 <2.0.0), B fällt in den zweiten (>=2.0.0 <3.0.0). Ändern Sie B auf 3.0.0 und sein Badge kippt auf erfüllt nicht — die obere Grenze <3.0.0 schließt es aus.
Um die Vorabversions-Regel in Aktion zu sehen, setzen Sie A auf 1.5.0-rc.1 und B auf 1.5.0, und belassen Sie den Bereich bei ^1.5.0-rc.0. Nun erfüllt A (dieselbe 1.5.0, der Bereich trägt ein passendes Vorabversions-Tag), während ein simples ^1.5.0 1.5.0-rc.1 nicht durchließe — die Schwelle existiert genau, um Release Candidates aus der Release-Abhängigkeitsauflösung herauszuhalten, bis Sie sich aktiv dafür entscheiden.
1.0.0 höher als 1.0.0-beta?#Ja. Eine Version ohne Vorabversions-Tag hat immer höhere Präzedenz als eine mit Vorabversions-Tag, selbst bei identischem major.minor.patch. Also gilt 1.0.0 > 1.0.0-rc.1 > 1.0.0-beta.11 > 1.0.0-alpha. Deshalb ist ein Release, das „gold geht“, ein echter Präzedenzsprung, nicht nur eine Etikettenänderung.
^ und ~?#Das Caret erlaubt Updates, die die am weitesten links stehende Nicht-Null-Komponente nicht verändern: ^1.2.3 erlaubt jedes 1.x.x ab 1.2.3 bis (aber nicht einschließlich) 2.0.0. Die Tilde ist strenger — sie pinnt die Minor-Version, wenn sie eine vollständige Version bekommt: ~1.2.3 erlaubt nur 1.2.x. Bei nur einer Major-Version (~1) erlauben Tilde und Caret beide den gesamten Major-Bereich. Die meisten Bibliotheken pinnen mit ^; Patches an eigenen veröffentlichten Paketen verwenden oft ~.
^1.0.0?#Absichtlich. Eine Vorabversion wie 1.5.0-rc.1 erfüllt einen Bereich nur, wenn ein Komparator im selben UND-Satz ein Vorabversions-Tag auf derselben 1.5.0 trägt. ^1.0.0 löst sich zu >=1.0.0 <2.0.0-0 ohne Vorabversion auf 1.5.0 auf, sodass die Schwelle Ihren Release-Build davon abhält, irgendjemandes zufälligen Release Candidate hineinzuziehen. Wenn Sie sich einschalten wollen, schreiben Sie explizit ^1.5.0-rc.0.
Nein. 1.0.0+exp.sha.5 und 1.0.0+exp.sha.6 haben gleiche Präzedenz — Build-Metadaten dienen nur der Identifikation. Der Parser zeigt sie dennoch an (und die Änderung meldet ein build, wenn nur die Metadaten abweichen), aber sie entscheiden nie eine Reihenfolge.
Eindeutige Besucher (dieses Gerät/Browser wird einmal gezählt)
Diese Seite zeigt Werbung über Google AdSense an. Wir verwenden Cookies für Anzeigenmessung und Personalisierung. Entscheiden Sie, ob Sie personalisierte Anzeigen zulassen möchten.