Semver-Rechner

Der Semver-Rechner vergleicht Versionen nach Semantic Versioning und prüft Bereiche wie ^1.2.3, ~1.4, 1.x oder >=2 <3 genau wie npm, mit Erklärung und nächster Version.

–

 

Nächste Versionen ab Version A
Versionsbereich prüfen

VersionErgebnisGrund

Alles läuft in Ihrem Browser. Eingaben verlassen Ihr Gerät nicht.

Bereiche nach npm (node-semver)
SchreibweiseBedeutetErlaubt Updates
1.2.3 oder =1.2.3=1.2.3keine, genau diese Version
^1.2.3>=1.2.3 <2.0.0-0Minor und Patch (Caret)
^0.2.3>=0.2.3 <0.3.0-0nur Patch, weil 0.x als instabil gilt
^0.0.3>=0.0.3 <0.0.4-0keine
~1.2.3>=1.2.3 <1.3.0-0nur Patch (Tilde)
~1.2>=1.2.0 <1.3.0-0nur Patch
~1>=1.0.0 <2.0.0-0Minor und Patch
1.x, 1.*, 1>=1.0.0 <2.0.0-0Minor und Patch
* oder leerjede Versionalle, ohne Vorabversionen
1.2.3 - 2.3>=1.2.3 <2.4.0-0Bindestrich-Bereich, fehlende Teile als x
>=1.2 <1.5beide BedingungenLeerzeichen bedeutet „und“
^1.0.0 || ^2.0.0eine der beiden|| bedeutet „oder“

Semantic Versioning und Versionsbereiche

Der Semver-Rechner vergleicht Versionsnummern nach Semantic Versioning 2.0.0 und prüft, ob Versionen in einen Bereich fallen. Eine Version hat drei Teile: MAJOR für inkompatible Änderungen, MINOR für neue, kompatible Funktionen und PATCH für Fehlerbehebungen. Dazu kommen optional eine Vorabversion nach einem Bindestrich (1.0.0-beta.2) und Build-Metadaten nach einem Pluszeichen, die beim Vergleich keine Rolle spielen. Wer Versionen vergleichen will, darf sie deshalb nicht als Text sortieren: 1.10.0 ist größer als 1.9.0.

Der zweite Teil prüft einen Versionsbereich, genau wie npm, pnpm und Yarn ihn in der package.json lesen. Ein npm Version Range wie ^1.2.3 erlaubt alle Versionen bis unter 2.0.0, ~1.2.3 nur Patches bis unter 1.3.0. Caret und Tilde verhalten sich bei Versionen unter 1.0.0 vorsichtiger: ^0.2.3 erlaubt nur 0.2.x. Der Rechner zeigt, wie ein Bereich intern aufgelöst wird, und welche höchste Version aus Ihrer Liste npm installieren würde.

Eine Besonderheit, die oft überrascht: Vorabversionen wie 1.3.0-beta.1 passen nur dann zu einem Bereich, wenn dieser selbst eine Vorabversion derselben Nummer nennt. ^1.2.3 schließt 1.3.0-beta.1 also aus, ^1.3.0-beta.0 nicht. So landen instabile Versionen nicht versehentlich in Ihrem Projekt. Die Regeln entsprechen dem Paket node-semver ohne die Option includePrerelease.

Anleitung: Semver-Rechner in 4 Schritten

  1. Version A und Version B eintragen, um sie nach Semantic Versioning zu vergleichen.
  2. Unter „Nächste Versionen ab Version A“ die nächsten Patch-, Minor- und Major-Nummern ablesen.
  3. Einen Bereich wie in package.json eintragen oder einen der Beispielbereiche wählen.
  4. Unter „Versionen zum Prüfen“ eine Liste einfügen und in der Tabelle Ergebnis und Grund je Version ablesen.

Typische Anwendungsfälle

  • Abhängigkeiten aktualisieren: Prüfen, ob eine neue Paketversion in den Bereich aus package.json fällt.
  • Fehlersuche: Nachvollziehen, warum npm eine bestimmte Version installiert oder eine Vorabversion ausschließt.
  • Release planen: Die richtige nächste Versionsnummer für Patch, Minor oder Major bestimmen.
Fragen

Häufige Fragen

Was ist der Unterschied zwischen ^ und ~ in package.json?

Das Caret ^1.2.3 erlaubt neue Minor- und Patch-Versionen bis unter 2.0.0. Die Tilde ~1.2.3 erlaubt nur neue Patch-Versionen bis unter 1.3.0. Bei 0.x-Versionen ist das Caret strenger und verhält sich wie die Tilde.

Ist 1.10.0 größer als 1.9.0?

Ja. Die Teile werden als Zahlen verglichen, nicht als Text. Deshalb gilt 1.10.0 > 1.9.0, obwohl eine Textsortierung es andersherum anzeigen würde.

Warum passt 2.0.0-beta.1 nicht zu ^1.0.0?

Weil 2.0.0-beta.1 über dem Bereich liegt und Vorabversionen ohnehin nur passen, wenn der Bereich eine Vorabversion derselben Versionsnummer nennt.

Wann erhöhe ich MAJOR, MINOR oder PATCH?

MAJOR bei Änderungen, die bestehenden Code brechen können, MINOR bei neuen Funktionen, die abwärtskompatibel sind, PATCH bei reinen Fehlerbehebungen. Beim Erhöhen werden die Stellen dahinter auf 0 gesetzt.

Zählen Build-Metadaten wie +build.5?

Nein. 1.0.0+build.1 und 1.0.0+build.2 gelten beim Vergleich als gleich. Die Metadaten dienen nur der Information.

Welche Version installiert npm bei ^1.2.3?

Die höchste veröffentlichte Version ab 1.2.3 und unter 2.0.0, ohne Vorabversionen. Ist eine package-lock.json vorhanden, installiert npm install die dort festgehaltene Version.

Wie lege ich in package.json eine feste Version fest?

Die Version ohne ^ oder ~ eintragen, also "1.2.3". Beim Installieren erreichen Sie das mit npm install paket --save-exact.

Weitere Werkzeuge

Das könnte auch helfen

Alle 358 Werkzeuge