Mode d'emploi
- Saisissez une Version, comme 1.4.0, et si vous voulez, une version à Comparer avec pour la situer.
- Choisissez une Incrémentation pour voir la version suivante. Pour une incrémentation Préversion, nommez-la dans Nom de la préversion.
- Saisissez une Plage pour vérifier si la version la satisfait, et lisez Lecture de la plage pour voir ce que représente chaque partie.
- Lisez Version incrémentée, Ordre et Vérification de la plage pour la réponse voulue.
Comment les versions sont ordonnées
SemVer 2.0.0 compare les numéros majeur, mineur et correctif comme des nombres. Une version avec une étiquette de préversion vient avant la même version sans étiquette. Les identifiants de préversion se comparent un à un : les nombres comme des nombres, le texte dans l'ordre ASCII, et un nombre avant un texte. Les métadonnées de build, la partie après +, ne comptent pas.
- L'ordre des exemples de la spécification : 1.0.0-alpha, 1.0.0-alpha.1, 1.0.0-alpha.beta, 1.0.0-beta, 1.0.0-beta.2, 1.0.0-beta.11, 1.0.0-rc.1, 1.0.0.
- Un v initial, comme dans v1.4.0, est accepté et ne fait pas partie de la version.
Comment fonctionne une incrémentation
Une incrémentation majeure augmente le premier nombre et met les deux autres à 0. Une incrémentation mineure ou correctif fait de même pour sa partie. Une version qui est encore une préversion perd son étiquette lorsque l'incrémentation ferait de toute façon une version finale : 1.0.0-alpha devient 1.0.0 avec une incrémentation majeure, comme le fait node-semver. Une incrémentation de préversion démarre le correctif suivant avec le nom que vous donnez, comme 1.4.1-beta.0, ou compte le dernier nombre d'une préversion existante, comme beta.1 vers beta.2.
Comment les plages sont lues
La syntaxe des plages suit node-semver, le paquet qu'utilise npm, et sa grammaire décrite dans le README. Chaque forme représente des comparateurs : ^1.3.0 signifie >=1.3.0 <2.0.0-0, ~1.2.3 signifie >=1.2.3 <1.3.0-0, et 1.2.x signifie >=1.2.0 <1.3.0-0. Les comparateurs d'un même ensemble doivent tous être vrais. Les ensembles reliés par || sont des solutions de rechange, et un ensemble vide accepte toute version, comme le fait *.
Préversions et plages
Une préversion comme 1.5.0-beta.1 ne satisfait une plage que lorsqu'un des comparateurs de son ensemble porte le même 1.5.0 avec une étiquette de préversion. Les versions inachevées restent donc hors des plages par défaut, comme l'explique le README de node-semver. La vérification de cette page suit cette règle.
Exemple détaillé : 1.4.0 avec une incrémentation mineure et ^1.3.0 || 2.x
La version 1.4.0 est supérieure à 1.4.0-beta.2, car une version finale est supérieure à sa préversion. Une incrémentation mineure donne 1.5.0. La plage ^1.3.0 || 2.x se lit >=1.3.0 <2.0.0-0 ou >=2.0.0 <3.0.0-0, et 1.4.0 satisfait le premier ensemble.
| Saisie | Résultat |
|---|---|
| 1.4.0 comparée à 1.4.0-beta.2 | 1.4.0 est supérieure à 1.4.0-beta.2. |
| Incrémentation mineure de 1.4.0 | 1.5.0 |
| 1.4.0 dans ^1.3.0 || 2.x | 1.4.0 satisfait ^1.3.0 || 2.x. |
Questions fréquentes
1.0.0+build.1 est-elle la même version que 1.0.0 ?
Pour l'ordre et les plages, oui. Les métadonnées de build après + ne comptent pas dans la priorité SemVer : les deux versions ont donc la même place dans un ordre. La page affiche tout de même le texte de build, pour que vous puissiez le voir.
Pourquoi 1.4.0-beta.2 est-elle inférieure à 1.4.0 ?
Une préversion est instable et peut ne pas tenir la compatibilité que promet son numéro : SemVer la place donc avant la version finale de mêmes numéros. Ainsi, 1.4.0-beta.2 vient avant 1.4.0, et 1.4.0 avant 1.4.1.
^1.3.0 accepte-t-il 2.0.0 ?
Non. Une plage en accent circonflexe garde le premier nombre non nul à gauche : ^1.3.0 signifie au moins 1.3.0 et inférieur à 2.0.0. Ajoutez || 2.x si la seconde majeure doit être acceptée, comme dans l'exemple.
Quelle est la différence entre ~1.2 et ^1.2 ?
La plage au tilde ~1.2 signifie >=1.2.0 <1.3.0-0 : elle accepte les changements de correctif comme 1.2.9 et refuse 1.3.0. La plage à l'accent circonflexe ^1.2 signifie >=1.2.0 <2.0.0-0 : elle accepte aussi 1.3.0 et 1.9.9, mais pas 2.0.0.
Pourquoi une plage refuse-t-elle 1.5.0-beta.1 ?
Les préversions sont exclues, sauf si un comparateur nomme la même version avec une étiquette de préversion, comme >=1.5.0-beta.0. node-semver fait ce choix, car les préversions changent vite et peuvent casser des choses.
Mes versions sont-elles envoyées à un serveur ?
Non. La version, la plage et la comparaison sont lues et vérifiées dans votre navigateur, et rien de ce que vous saisissez n'est stocké.
Sources
- Semantic Versioning (en anglais) : 2.0.0, the specification
- node-semver (en anglais) : README, ranges and the range grammar (npm)
- node-semver (en anglais) : README, prerelease tags (npm)
- node-semver (en anglais) : repository, ISC licence (npm)
Chiffres et texte vérifiés pour la dernière fois le mardi 10 novembre 2026.