Analizzatore SemVer
Scomponga una versione come 1.2.3-alpha.1+build.7 in major 1, minor 2, patch 3, prerelease alpha.1 e build build.7, verificata in modo rigoroso secondo SemVer 2.0.0. Un'etichetta malformata viene rifiutata indicando la regola violata. Gratis nel suo browser.
- Gratis
- Funziona nel suo browser
- Senza registrazione
- I suoi dati restano sul dispositivo
Esegui gratis nel browser
Esempio risolto
- Testo
- 1.2.3-alpha.1+build.7
- Versione
- 1.2.3-alpha.1+build.7
- Maggiore
- 1
- Minore
- 2
- Patch
- 3
Una versione non è soltanto tre numeri: gli identificatori opzionali di prerelease uniti da trattini e i metadati di build con prefisso più cambiano come si etichetta e si confronta un rilascio. Questo analizzatore di versione SemVer accetta una sola stringa, la valida in modo rigoroso rispetto alla specifica ufficiale SemVer 2.0.0 e restituisce i componenti numerici major, minor e patch insieme a eventuali identificatori di prerelease e di build.
Ciò che SemVer 2.0.0 consente davvero
Il versionamento semantico 2.0.0 definisce una versione come MAJOR.MINOR.PATCH, tre interi non negativi uniti da punti, con identificatori opzionali di prerelease dopo un trattino e metadati opzionali di build dopo un più. Ciascuno di major, minor e patch è un identificatore numerico: oppure uno zero isolato, oppure una cifra da uno a nove seguita da altre cifre, così 1.0.0 è valido e 01.0.0 non lo è.
Una versione di prerelease è il nucleo seguito da un trattino e da uno o più identificatori separati da punti, come alpha, rc.1 o 0.3.4. Un identificatore di prerelease è oppure un identificatore numerico con la stessa regola di nessun zero iniziale, oppure un identificatore alfanumerico che contiene almeno una lettera o un trattino e, per il resto, soltanto lettere ASCII, cifre e trattini.
I metadati di build seguono un segno più e usano lo stesso alfabeto di identificatori, salvo che gli identificatori di build solo numerici possono conservare zeri iniziali, quindi 1.0.0+001 è lecito. Identificatori vuoti, punti consecutivi, un trattino o un più finale, una v iniziale, versioni a due parti come 1.2 e lettere non ASCII sono illeciti. Questo analizzatore implementa quella grammatica come uno scanner da sinistra a destra, non come un'espressione regolare permissiva, così un fallimento nomina la regola infranta invece di restituire un oggetto a metà.
L'ordine di confronto è fuori ambito: la capacità analizza e valida, non classifica due versioni l'una rispetto all'altra.
Dove un analizzatore SemVer ripaga davvero
I registri di pacchetti, i robot di pubblicazione e i generatori di changelog hanno bisogno di un solo posto che dica se un'etichetta è una versione SemVer lecita e quali sono le sue cinque parti. Un lavoro di integrazione continua che rifiuta di pubblicare quando l'etichetta git è v1.2.3 invece di 1.2.3, o quando qualcuno ha digitato solo 1.2, evita un rilascio rotto prima che arrivi a un registro.
Gli scanner di dipendenze che leggono lockfile vogliono campi strutturati major, minor, patch e prerelease senza trascinare un runtime semver specifico di un linguaggio in un worker di bordo. Chi insegna il versionamento vuole una pagina dedicata che spieghi gli zeri iniziali e i metadati di build, invece di seppellire l'argomento sotto uno spezzatore di stringhe generico. Una convalida fallita non consuma il saldo.
Tenga le stringhe sotto il limite di lunghezza documentato, fissi i campi strutturati nelle prove e otterrà componenti riproducibili per strumenti di rilascio, plugin di apprendimento e worker di bordo, senza erigere una libreria semver propria di un linguaggio.
Casi d'uso
Convalidare le etichette git prima di un rilascio
Rifiuti un lavoro di pubblicazione quando l'etichetta è v1.2.3, 1.2 o 01.0.0 invece di una versione SemVer 2.0.0 lecita.
Spezzare le versioni di un lockfile o di un SBOM
Trasformi ogni versione di dipendenza in campi major, minor, patch, prerelease e build per scanner e cruscotti.
Domande frequenti
Quale stringa di versione SemVer 2.0.0 è valida?
MAJOR.MINOR.PATCH con -prerelease e +build opzionali, soltanto lettere ASCII, cifre e trattini. Esempio: 1.2.3-alpha.1+build.7. Le versioni a due parti e una v iniziale non sono valide.
L'analizzatore accetta una v iniziale, come v1.2.3?
No. SemVer 2.0.0 non consente un prefisso v. Invii 1.2.3.
Perché 01.0.0 viene rifiutato?
Gli identificatori numerici non devono avere zeri iniziali. 0 è consentito come identificatore intero (0.1.0), ma 01 no. La stessa regola vale per gli identificatori numerici di prerelease come 01 in 1.0.0-01.
Come tornano prerelease e build quando sono assenti?
Quelle chiavi sono omesse, mai impostate a null.
I metadati di build possono avere zeri iniziali?
Sì. Dopo il segno più, un identificatore di build fatto solo di cifre può mantenere gli zeri iniziali, quindi 1.0.0+001 è valido. Major, minor, patch e gli identificatori numerici di prerelease non possono.
Mi dice quale di due versioni è più recente?
No. Analizza e valida una versione alla volta e non ordina le versioni tra loro. Se deve ordinare o confrontare, usi nei suoi strumenti le parti strutturate che restituisce.
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/dev/semver-parse \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"1.2.3-alpha.1+build.7"}'const res = await fetch("https://api.kit.forhosting.com/dev/semver-parse", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "1.2.3-alpha.1+build.7"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/semver-parse",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "1.2.3-alpha.1+build.7"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/semver-parse", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"1.2.3-alpha.1+build.7"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"1.2.3-alpha.1+build.7"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/semver-parse", 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
{
"text": "1.2.3-alpha.1+build.7"
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.semver_parse",
"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 | 256 |
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
Il versionamento semantico (SemVer 2.0.0) è la grammatica delle versioni usata dai pacchetti npm, dalle crate Rust, dai moduli Go e dalla maggior parte delle API pubbliche. I prefissi v iniziali, i numeri di patch assenti, gli zeri iniziali sugli identificatori numerici, gli identificatori vuoti e i caratteri non ASCII vengono rifiutati con invalid_input anziché riscritti in silenzio.
Contratto di ingresso, forma della risposta ed errori
Gli spazi intorno vengono tagliati; la stringa restante deve essere una versione SemVer 2.0.0 completa. Non invii una v iniziale, un operatore di intervallo né un accorciamento a due parti. Quei fallimenti non vengono fatturati. Invii un corpo JSON con il campo stringa obbligatorio text (alias version, semver, value). In caso di successo il corpo ripete version come l'ingresso tagliato, major, minor e patch come interi sicuri, core come la sottostringa MAJOR.MINOR.PATCH, e is_prerelease come booleano. Quando è presente una sezione prerelease, prerelease è la stringa di identificatori senza il trattino iniziale e prerelease_identifiers è l'array spezzato; entrambe le chiavi sono omesse se non c'è prerelease. Quando sono presenti metadati di build, build e build_identifiers appaiono allo stesso modo e sono omessi altrimenti, così i client non vedono mai null. Esempio: 1.2.3-alpha.1+build.7 produce major 1, minor 2, patch 3, prerelease alpha.1, build build.7 e is_prerelease true. Text assente, stringa vuota, testo più lungo di duecentocinquantasei caratteri, un numero al posto di una stringa, zeri iniziali su major, minor, patch o un identificatore numerico di prerelease, caratteri illeciti, caratteri residui dopo la versione e una v iniziale falliscono con invalid_input e un messaggio in inglese che nomina il campo o la regola infranta. Il prezzo API in successo è la base pubblicata di $0.002 per elemento.
Dove un analizzatore SemVer ripaga davvero
Poiché l'implementazione è parse puro di livello A, ogni chiamata riuscita costa il prezzo base pubblicato $0.002 senza token di modello né rete in uscita.
Casi di integrazione
Insegnare la grammatica SemVer
Mostri agli studenti quali stringhe la specifica accetta e quali rifiuta, con le stesse regole che applica l'API.
Domande tecniche
Quanto costa l'analizzatore di versione SemVer?
Lo strumento del browser è gratuito. Le richieste API usano il saldo prepagato KIT a $0.002 per chiamata riuscita; un ingresso non valido non viene fatturato.