Validateur SemVer
Validez des versions sémantiques et analysez des plages.
Version
- MAJEUR
- MINEUR
- CORRECTIF
- Préversion
- Métadonnées de build
Plage
Résultat JSON
Ce qui compte comme version
Grammaire SemVer 2.0.0 stricte. Les trois nombres sont des entiers ASCII non négatifs sans zéro initial.
- MAJOR.MINOR.PATCH
- rupture / compatible / correction
- 1.2.3-alpha.1
- préversion, se classe sous 1.2.3
- 1.2.3+build.5
- métadonnées de build, ignorées pour la préséance
- 1.2.3-0.3
- les identifiants numériques de préversion se comparent comme des nombres
- v1.2.3
- pas une version sémantique (FAQ de la spécification)
- 01.2.3
- non valide : zéro initial
- 1.2.3-01
- non valide : préversion numérique complétée par un zéro
- 1.2.3+0.09
- valide : les métadonnées de build peuvent avoir des zéros initiaux
Opérateurs de plage
- 1.2.3
- exactement cette version
- ^1.2.3
- compatible : >=1.2.3 <2.0.0-0
- ~1.2.3
- correctif uniquement : >=1.2.3 <1.3.0-0
- >=1.2.3 <2.0.0
- ET de comparateurs dans un même ensemble
- 1.2.3 - 2.0.0
- plage inclusive, espaces obligatoires des deux côtés
- 1.2.x / 1.x / *
- versions partielles et jokers
- a || b
- union : l’un ou l’autre ensemble peut correspondre
- ~>1.2.3
- alias historique npm, traité comme ~1.2.3
Comment npm complète les versions partielles
Vérifié avec node-semver ; le suffixe -0 est la sentinelle npm qui exclut les préversions de la série suivante.
| Plage | Développée |
|---|---|
| ^1.2.3 | >=1.2.3 <2.0.0-0 |
| ^0.2.3 | >=0.2.3 <0.3.0-0 |
| ^0.0.3 | >=0.0.3 <0.0.4-0 |
| ^1 | >=1.0.0 <2.0.0-0 |
| ~1.2.3 | >=1.2.3 <1.3.0-0 |
| ~1.2 | >=1.2.0 <1.3.0-0 |
| ~1 | >=1.0.0 <2.0.0-0 |
| 1.2.x | >=1.2.0 <1.3.0-0 |
| 1.x | >=1.0.0 <2.0.0-0 |
| 1.2.3 - 2.0.0 | >=1.2.3 <=2.0.0 |
| 1.2.3 - 2 | >=1.2.3 <3.0.0-0 |
| >1.x | >=2.0.0 |
Préséance des préversions
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
Les identifiants numériques se comparent comme des nombres et se classent sous les alphanumériques ; un préfixe plus court se classe plus bas. Les métadonnées de build ne comptent jamais.
Erreurs courantes
Celles-ci arrivent directement depuis package.json et les historiques de discussion.
- "1.2.3",
- Les guillemets et la virgule viennent de package.json - collez uniquement la version.
- v1.2.3
- Les étiquettes Git portent un v, les versions sémantiques non.
- 1.2
- Deux nombres forment une plage, pas une version.
- 1.2.3-01
- Le mode souple de npm le lit comme 1.2.3-1 et le réécrit silencieusement.
Quel référentiel est utilisé
- Le verdict sur une chaîne de version suit SemVer 2.0.0 strict - pas de mode souple, pas de réécriture, pas de normalisation.
- Les plages suivent npm node-semver, car la spécification SemVer ne définit pas les plages.
- Cet outil est plus strict que npm sur les plages : un préfixe v ou un zéro initial dans une plage est refusé, et un côté vide de || est une erreur plutôt que « n’importe quelle version ».
- Les lectures npm affichées pour une version invalide viennent de semver.valid(v, {loose:true}) et semver.coerce(v). Elles sont purement informatives - jamais une validation.
- Les positions comptent les points de code et commencent à 1 dans l’interface, à 0 dans le JSON.
Comment l’utiliser
- Collez une version comme 1.2.3-beta.1+build.5 dans le champ de gauche. Tout ce qui suit se met à jour au fil de la saisie - aucun bouton à presser.
- Collez éventuellement une plage npm comme ^1.2.0 à droite pour voir comment la version et la plage se rapportent l’une à l’autre.
- Lisez d’abord le badge : valide ou non, et si non, quelle règle a échoué à quel caractère.
- Cochez Inclure les préversions pour obtenir la lecture includePrerelease de npm.
- Dépliez le résultat JSON pour copier ou télécharger la liste complète des problèmes.
Exemple détaillé
Version + plage
1.2.3-beta.1+build.5 ^1.2.0
Résultat
SemVer valide (MAJEUR 1, MINEUR 2, CORRECTIF 3, préversion beta.1, build build.5). ^1.2.0 se développe en >=1.2.0 <2.0.0-0, bornes [1.2.0, 2.0.0). Verdict : non satisfait - l’ensemble n’a pas de comparateur de préversion pour 1.2.3.
Cochez Inclure les préversions et la même paire devient satisfaite.
Limites
- Le verdict suit SemVer 2.0.0 strict, donc v1.2.3 et 1.2.3-01 sont refusés même si le mode souple de npm les accepte ou les réécrit.
- Les plages suivent uniquement npm node-semver - git describe, Cargo, PEP 440 et les versions de modules Go sont hors périmètre.
- Aucune requête au registre : l’outil ne peut pas dire quelle version ^1.2.0 installerait réellement.
- Une version et une plage à la fois - pas de listes par lot, de tri, de comparaison par paires ni d’aperçu d’incrémentation.
- Les nombres centraux au-dessus de Number.MAX_SAFE_INTEGER sont signalés et comparés comme texte, jamais convertis en nombre JS.
- Rien ne quitte la page : pas de réseau, pas de stockage, pas de paramètres d’URL - un rechargement efface tout.
Outils associés
D’autres aides pour développeurs qui fonctionnent entièrement dans votre navigateur.