Confronti versioni semantiche secondo le regole SemVer
Scopra quale di due versioni viene davvero prima: 1.0.0-alpha.1 è inferiore a 1.0.0-alpha.beta, perché un’etichetta numerica sta sempre sotto una parola, e 2.10.0 supera correttamente 2.9.0. Gratis nel suo browser.
- Gratis
- Funziona nel suo browser
- Senza registrazione
- I suoi dati restano sul dispositivo
Esegui gratis nel browser
Esempio risolto
- Prima versione
- 1.0.0-alpha.1
- Seconda versione
- 1.0.0-alpha.beta
- Confronto
- less
- Precedenza
- -1
- Versione maggiore
- 1.0.0-alpha.beta
Confronti due numeri di versione semantica senza affidarsi all’ordinamento lessicale, alla conversione in virgola mobile o a scorciatoie specifiche dei gestori di pacchetti. Questa capacità convalida entrambi gli input secondo Semantic Versioning 2.0.0 e applica le regole ufficiali di precedenza ai componenti major, minor, patch e pre-release. Indica se la prima versione ha precedenza inferiore, superiore o uguale alla seconda e ignora correttamente i metadata di build. Le versioni non valide o incomplete producono un chiaro errore di input, anziché un ordinamento fuorviante.
Confronti le versioni con le regole usate dalle release software
Il normale confronto tra stringhe restituisce risultati errati per molti numeri di versione. Per esempio, un ordinamento lessicale può collocare 2.10.0 prima di 2.9.0 perché confronta il carattere 1 con 9, mentre una conversione numerica elimina il significato distinto delle posizioni major, minor e patch. Questo comparatore analizza separatamente ogni posizione obbligatoria e procede da sinistra a destra.
Rifiuta inoltre forme permissive, come un componente patch mancante, una v iniziale o un identificatore numerico principale con zero iniziale. Una convalida rigorosa è preziosa negli script di distribuzione, nei registri dei pacchetti, nei servizi di aggiornamento e nei controlli CI, perché impedisce a dati non validi di passare silenziosamente come release legittime. Invii la prima e la seconda versione esattamente come pubblicate.
Il risultato include una precedenza con segno: meno uno indica che la prima è inferiore, zero indica equivalenza e uno indica che la prima è superiore. Un campo descrittivo rende la stessa risposta pratica per interfacce e condizioni di workflow.
Comprenda l’ordine delle pre-release e i metadata di build
Gli identificatori di pre-release sono il punto in cui i comparatori semplicistici falliscono più spesso. Una release con un suffisso preliminare ha precedenza inferiore rispetto alla stessa versione major, minor e patch priva del suffisso: 1.0.0-rc.1 è quindi inferiore a 1.0.0. Se entrambe sono pre-release, gli identificatori vengono confrontati in sequenza.
Quelli numerici si confrontano per grandezza, quelli non numerici secondo l’ordine lessicale ASCII e un identificatore numerico ha sempre precedenza inferiore a uno non numerico. Se tutti gli identificatori condivisi coincidono, la versione che ne contiene di più ha precedenza superiore. Queste regole riproducono la progressione standard da alpha a beta e alle release candidate senza attribuire significati speciali a parole specifiche.
I metadata dopo il segno più vengono convalidati ma esclusi dalla precedenza. Pertanto, 1.0.0+linux e 1.0.0+windows sono equivalenti nonostante le stringhe diverse.
Usi il confronto rigoroso in modo sicuro nell’automazione
Un risultato deterministico può diventare un punto decisionale piccolo e affidabile all’interno di sistemi più ampi. Una pipeline di rilascio può richiedere che la versione proposta sia superiore a quella distribuita. Un programma di aggiornamento può stabilire se un manifesto scaricato rappresenta un upgrade, un downgrade o una build equivalente.
Una suite di test può coprire la sequenza canonica delle pre-release e respingere le etichette non valide prima della pubblicazione degli artefatti. L’implementazione non effettua richieste di rete, non legge l’orologio e non usa valori casuali: gli stessi input producono sempre lo stesso output. Gli identificatori numerici vengono confrontati come stringhe di cifre, invece di essere convertiti in numeri JavaScript, mantenendo l’ordine corretto anche oltre l’intervallo degli interi sicuri.
La lunghezza degli input è limitata per mantenere l’elaborazione circoscritta.
Casi d'uso
Protegga una pipeline di rilascio
Confermi che la versione proposta di un pacchetto abbia precedenza superiore a quella distribuita prima della pubblicazione.
Valuti i manifesti di aggiornamento
Stabilisca se una release remota è un upgrade, un downgrade o una build equivalente senza l’influenza dei metadata.
Convalidi le sequenze preliminari
Verifichi l’ordine di versioni alpha, beta, candidate e finali, rifiutando stringhe Semantic Versioning non valide.
Domande frequenti
Che cosa indica il valore di confronto?
Una precedenza di -1 indica che la prima versione è inferiore, 0 che sono equivalenti e 1 che la prima è superiore.
I metadata di build influiscono sul risultato?
No. Vengono convalidati, ma Semantic Versioning li esclude dai confronti di precedenza.
Una pre-release è inferiore alla corrispondente release finale?
Sì. A parità di numeri major, minor e patch, una versione con identificatori preliminari ha precedenza inferiore a quella finale.
Sono ammessi gli zeri iniziali?
Gli identificatori numerici major, minor, patch e di pre-release non possono contenere zeri iniziali, salvo la singola cifra zero.
Posso aggiungere una v iniziale o omettere il numero patch?
No. Gli input devono essere stringhe Semantic Versioning 2.0.0 rigorose, come 1.2.3 o 1.2.3-rc.1.
Quanto costa?
L’esecutore nel browser è disponibile per verifiche interattive.
Strumenti correlati
Per sviluppatori — accesso via API
Tutto quello che vedi in questa pagina è disponibile anche via API. Questa sezione è per i team che vogliono integrarlo nei propri sistemi; chi non ne ha bisogno può semplicemente usare lo strumento qui sopra.
Endpoint
Autenticazione con Bearer token: un POST mette in coda l'attività e il risultato arriva via webhook o link firmato.
Chiamala dal tuo stack
curl -X POST https://api.kit.forhosting.com/dev2/semver-compare \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"first_version":"2.1.0-rc.1","second_version":"2.1.0"}'const res = await fetch("https://api.kit.forhosting.com/dev2/semver-compare", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"first_version": "2.1.0-rc.1",
"second_version": "2.1.0"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev2/semver-compare",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"first_version": "2.1.0-rc.1",
"second_version": "2.1.0"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev2/semver-compare", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"first_version":"2.1.0-rc.1","second_version":"2.1.0"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"first_version":"2.1.0-rc.1","second_version":"2.1.0"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev2/semver-compare", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Esempio di richiesta
{
"first_version": "2.1.0-rc.1",
"second_version": "2.1.0"
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev2.semver_compare",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L'API è asincrona: ricevi subito un task_id e puoi fare polling fino a 1 richiesta al secondo.
Prezzi
Prezzo pubblicato, senza token né crediti. Se l'attività fallisce, non paghi.
Limiti
max_chars_per_version | 1024 |
Errori
| HTTP | Codice | Significato |
|---|---|---|
401 | unauthorized | Chiave API mancante o non valida: controlla l'header Authorization. |
402 | insufficient_balance | Credito esaurito: ricarica per continuare a eseguire attività. |
404 | unknown_type | Tipo di attività sconosciuto: controlla il campo type della richiesta. |
429 | rate_limited | Troppe richieste in poco tempo: rallenta e riprova tra qualche secondo. |
Note tecniche
Comprenda l’ordine delle pre-release e i metadata di build
A parità di precedenza, greater_version è null perché nessun input prevale sull’altro.
Usi il confronto rigoroso in modo sicuro nell’automazione
Usi l’esecutore nel browser per un controllo interattivo oppure chiami l’API a $0.002 quando il confronto appartiene a un flusso ripetibile. Consideri invalid_input un problema di qualità dei dati da correggere.