Verifica di intervalli semver
Semver Range Tester
Controlla quali versioni soddisfano un intervallo, confronta due versioni e ordina un elenco secondo la precedenza.
Risponde alle due domande che ci si pone davvero sul versionamento semantico: questa versione soddisfa questo intervallo, e quale di queste versioni installerebbe npm. Confronta anche due versioni per precedenza e mostra che cosa produrrebbe ogni salto di `npm version`.
Intervallo
Comprende: 1.0.0 o successiva e precedente a 2.0.0
La grammatica degli intervalli di npm: `^` `~` `x` `-` `||` e gli operatori di confronto. Non fa parte di semver.org, che definisce solo il formato di una versione e il suo ordine.
Versioni
Una per riga, oppure separate da virgole.
Quali rientrano
- —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
- rientra1.0.0
- rientra1.2.0verrebbe installata
- —2.0.0-rc.1
- —2.0.0
- —2.1.3
Confrontarne due
Ordine
1.0.0-beta.11 è maggiore
Differenza
prerelease
La precedenza segue alla lettera la clausola 11 di semver.org, metadati di build compresi — cioè ignorati.
Versione successiva
| 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 |
Quello che produrrebbe `npm version <tipo>`.
C’è una regola che sorprende tutti: una preversione rientra in un intervallo solo se l’intervallo stesso nomina una preversione dello stesso major.minor.patch. Ecco perché ^1.0.0 non corrisponde a 2.0.0-beta.1, ed ecco perché un tag rc non si installa mai da solo per sbaglio.
Come si usa
Scrivere l’intervallo
`^1.0.0`, `~1.2.3`, `>=1.2.7 <1.3.0`, `1.2.3 - 2.3.4` e `||` funzionano tutti. Sotto compare una descrizione in parole semplici di che cosa soddisfa.
Incollare le versioni che si hanno
Una per riga, oppure separate da virgole — l’uscita di `npm view <pkg> versions` si incolla così com’è. Ognuna viene marcata come corrispondente o no, e quella che installerebbe npm è etichettata.
Confrontarne due, o pianificare la prossima release
Il pannello di confronto segue esattamente la clausola 11 di semver.org. La tabella dei salti mostra che cosa produrrebbero `npm version major`, `preminor` e gli altri a partire da un dato punto di partenza.
Domande frequenti
Perché `^1.0.0` non soddisfa `2.0.0-beta.1`?
Due motivi insieme. `^1` non arriva mai al major 2, e per conto suo una prerelease soddisfa un intervallo solo quando l’intervallo stesso nomina una prerelease dello stesso major.minor.patch. È questa seconda regola che impedisce a un tag `rc` di installarsi per sbaglio.
Perché `^0.2.3` si comporta in modo diverso?
Sotto la 1.0.0 il caret si stringe al minor: `^0.2.3` ammette 0.2.x ma non 0.3.0, perché di un progetto 0.x si dà per scontato che rompa a ogni minor. È una regola di npm e non di semver.org, e sorprende tutti ogni volta.
`1.0.0+build.1` è diversa da `1.0.0`?
Stringhe diverse, stessa precedenza: la clausola 10 dice che i metadati di build vengono ignorati nel confronto. Il che vuol dire che un ordinamento su versioni che differiscono solo nei metadati di build non è stabile, e due versioni così non si possono ordinare affatto.
La sintassi degli intervalli fa parte di semver?
No. semver.org definisce il formato della versione e come si confrontano due versioni, e si ferma lì. `^`, `~`, `x` e `||` sono la grammatica degli intervalli di npm, che altri ecosistemi hanno preso in prestito oppure sostituito: Cargo, Composer e pip differiscono ciascuno nei dettagli.
Può ricevere da
Confronto fra documenti OpenAPI
OpenAPI Diff
Confronta due documenti OpenAPI e separa le modifiche che rompono la compatibilità da quelle che aggiungono soltanto.
Scelta della licenza open source
Licence Chooser
Mette a confronto le licenze open source più diffuse per obblighi e compatibilità e produce il file LICENSE.
Formattatore e validatore JSON
JSON Formatter & Validator
Formatta, minifica e valida il JSON, indicando riga e colonna esatte di un errore di sintassi.
Formattatore e validatore YAML
YAML Formatter & Validator
Riporta il YAML a un’indentazione coerente, lo valida e segnala gli errori di tabulazione e di ancora che rompono i parser.
Dopo
Questi accettano ciò che produce questo strumento, così il risultato può passare direttamente.
Formattatore e validatore JSON
JSON Formatter & Validator
Formatta, minifica e valida il JSON, indicando riga e colonna esatte di un errore di sintassi.
Scelta della licenza open source
Licence Chooser
Mette a confronto le licenze open source più diffuse per obblighi e compatibilità e produce il file LICENSE.
Confronto fra documenti OpenAPI
OpenAPI Diff
Confronta due documenti OpenAPI e separa le modifiche che rompono la compatibilità da quelle che aggiungono soltanto.
Conversione JSON ⇄ CSV
JSON ⇄ CSV
Appiattisce il JSON annidato in colonne o ricostruisce gli oggetti da una tabella, con i nomi di colonna a percorso puntato.
Confronto fra due JSON
JSON Diff
Confronta due documenti JSON per struttura, ignorando l’ordine delle chiavi e riportando i percorsi aggiunti, tolti e cambiati.
Da JSON a TypeScript
JSON to TypeScript
Deduce interfacce o tipi TypeScript da un esempio JSON, unendo i campi facoltativi e le unioni.