Testeur de plage semver
Semver Range Tester
Indique quelles versions satisfont une plage, compare deux versions et trie une liste dans l’ordre de préséance.
Répond aux deux questions que l'on se pose réellement sur le versionnage sémantique : est-ce que cette version satisfait cette plage, et laquelle de ces versions npm installerait-il. Il compare aussi deux versions par préséance et montre ce que produirait chaque incrément `npm version`.
Plage
Couvre : 1.0.0 ou plus récente et plus ancienne que 2.0.0
La grammaire des plages de npm : `^` `~` `x` `-` `||` et les opérateurs de comparaison. Elle ne fait pas partie de semver.org, qui ne définit que le format d’une version et son ordre.
Versions
Une par ligne, ou séparées par des virgules.
Lesquelles correspondent
- —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
- correspond1.0.0
- correspond1.2.0serait installée
- —2.0.0-rc.1
- —2.0.0
- —2.1.3
En comparer deux
Ordre
1.0.0-beta.11 est supérieure
Différence
prerelease
La précédence suit exactement la clause 11 de semver.org, métadonnées de build comprises — c’est-à-dire ignorées.
Version suivante
| major | 2.0.0 |
|---|---|
| minor | 1.3.0 |
| patch | 1.2.4 |
| premajor | 2.0.0-alpha.0 |
| preminor | 1.3.0-alpha.0 |
| prepatch | 1.2.4-alpha.0 |
| prerelease | 1.2.4-alpha.0 |
Ce que produirait `npm version <type>`.
Une règle surprend tout le monde : une préversion ne satisfait une plage que si la plage mentionne elle-même une préversion du même major.minor.patch. C’est pourquoi ^1.0.0 ne correspond pas à 2.0.0-beta.1, et pourquoi une étiquette rc ne s’installe jamais toute seule par accident.
Comment s’en servir
Écrivez la plage
`^1.0.0`, `~1.2.3`, `>=1.2.7 <1.3.0`, `1.2.3 - 2.3.4` et `||` fonctionnent tous. Une description en langage courant de ce qu'elle accepte apparaît en dessous.
Collez les versions que vous avez
Une par ligne, ou séparées par des virgules — la sortie de `npm view <pkg> versions` se colle telle quelle. Chacune est marquée comme correspondante ou non, et celle que npm installerait est étiquetée.
Comparez-en deux, ou préparez la prochaine version
Le panneau de comparaison suit exactement la clause 11 de semver.org. La table des incréments montre ce que `npm version major`, `preminor` et les autres produiraient à partir d'un point de départ donné.
Questions fréquentes
Pourquoi `^1.0.0` ne correspond-il pas à `2.0.0-beta.1` ?
Deux raisons à la fois. `^1` n'atteint jamais la majeure 2 et, séparément, une préversion ne satisfait une plage que lorsque la plage nomme elle-même une préversion des mêmes majeure.mineure.correctif. Cette seconde règle est ce qui empêche une étiquette `rc` de s'installer par accident.
Pourquoi `^0.2.3` se comporte-t-il différemment ?
En dessous de 1.0.0, le caret se resserre sur la mineure : `^0.2.3` autorise 0.2.x mais pas 0.3.0, parce qu'un projet en 0.x est réputé casser à chaque mineure. C'est la règle de npm plutôt que celle de semver.org, et elle surprend à chaque fois.
`1.0.0+build.1` est-il différent de `1.0.0` ?
Chaînes différentes, même préséance — la clause 10 dit que les métadonnées de build sont ignorées lors de la comparaison. Ce qui veut dire qu'un tri sur des versions qui ne diffèrent que par leurs métadonnées de build n'est pas stable, et que deux versions de ce genre ne peuvent pas être ordonnées du tout.
La syntaxe des plages fait-elle partie de semver ?
Non. semver.org définit le format d'une version et la façon dont deux versions se comparent, et s'arrête là. `^`, `~`, `x` et `||` sont la grammaire de plages de npm, que les autres écosystèmes ont soit empruntée, soit remplacée — Cargo, Composer et pip diffèrent chacun dans les détails.
À alimenter depuis
Comparateur OpenAPI
OpenAPI Diff
Compare deux documents OpenAPI et sépare les changements cassants des ajouts sans conséquence.
Choisir une licence
Licence Chooser
Compare les licences libres courantes par obligation et par compatibilité et produit le fichier LICENSE correspondant.
Formateur et validateur JSON
JSON Formatter & Validator
Met en forme, minifie et valide du JSON en désignant la ligne et la colonne exactes de l’erreur de syntaxe.
Formateur et validateur YAML
YAML Formatter & Validator
Réindente le YAML de façon cohérente, le valide et signale les tabulations et les ancres qui font échouer les analyseurs.
Ensuite
Ces outils acceptent ce que celui-ci produit : le résultat peut y aller directement.
Formateur et validateur JSON
JSON Formatter & Validator
Met en forme, minifie et valide du JSON en désignant la ligne et la colonne exactes de l’erreur de syntaxe.
Choisir une licence
Licence Chooser
Compare les licences libres courantes par obligation et par compatibilité et produit le fichier LICENSE correspondant.
Comparateur OpenAPI
OpenAPI Diff
Compare deux documents OpenAPI et sépare les changements cassants des ajouts sans conséquence.
Conversion JSON ⇄ CSV
JSON ⇄ CSV
Aplatit du JSON imbriqué en colonnes ou reconstruit des objets depuis un tableau, avec un nommage des colonnes par chemin pointé.
Comparateur JSON
JSON Diff
Compare deux documents JSON sur leur structure, sans tenir compte de l’ordre des clés, et signale les chemins ajoutés, retirés et modifiés.
JSON vers TypeScript
JSON to TypeScript
Déduit des interfaces ou des types TypeScript à partir d’un échantillon JSON, en fusionnant les champs facultatifs et les unions.