ForHosting KIT · Ferramentas para dev

Compare números de versão semântica pelas regras SemVer

Descubra qual de duas versões vem mesmo primeiro: 1.0.0-alpha.1 é menor que 1.0.0-alpha.beta, porque um rótulo numérico sempre fica abaixo de uma palavra, e 2.10.0 supera corretamente 2.9.0. Grátis no seu navegador.

  • Grátis
  • Funciona no seu navegador
  • Sem cadastro
  • Seus dados não saem do seu aparelho
Use pelo WebAPIE-mailTelegramApp em breve
Se você digitar
Primeira versão
1.0.0-alpha.1
Segunda versão
1.0.0-alpha.beta
Você obtém
Comparação
less
Precedência
-1
Versão maior
1.0.0-alpha.beta

Compare dois números de versão semântica sem depender de ordenação lexical, conversão de ponto flutuante ou atalhos específicos de gerenciadores de pacotes. Esta capacidade valida as duas entradas conforme o Semantic Versioning 2.0.0 e aplica as regras oficiais de precedência aos componentes principal, secundário, de correção e de pré-lançamento. Ela informa se a primeira versão tem precedência menor, maior ou igual à segunda e ignora corretamente os metadados de compilação. Versões inválidas ou incompletas geram um erro de entrada claro, em vez de uma ordenação enganosa.

Compare versões com as regras usadas em lançamentos de software

A comparação comum de textos fornece a resposta errada para muitos números de versão. Por exemplo, uma ordenação lexical pode colocar 2.10.0 antes de 2.9.0 porque compara o caractere 1 com o 9, enquanto a conversão numérica elimina o significado separado das posições principal, secundária e de correção. Este comparador analisa cada posição obrigatória de forma independente e as compara da esquerda para a direita.

Ele também rejeita formatos flexíveis, como a ausência do componente de correção, uma v inicial ou um identificador numérico principal com zero à esquerda. Essa validação rigorosa é valiosa em scripts de implantação, registros de pacotes, serviços de atualização e verificações de CI, pois dados malformados não passam silenciosamente como lançamentos legítimos. Envie a primeira e a segunda versões exatamente como foram publicadas.

O resultado contém uma precedência com sinal: menos um significa que a primeira é menor, zero indica equivalência e um significa que a primeira é maior. Um campo descritivo facilita o uso da mesma resposta em interfaces e condições de fluxo.

Entenda a ordem de pré-lançamento e os metadados de compilação

Os identificadores de pré-lançamento são o ponto em que comparadores simplistas mais falham. Um lançamento com sufixo de pré-lançamento tem precedência menor que a mesma versão principal, secundária e de correção sem o sufixo; portanto, 1.0.0-rc.1 é menor que 1.0.0. Quando ambas são pré-lançamentos, os identificadores são comparados em sequência.

Os numéricos são comparados por magnitude, os não numéricos pela ordem lexical ASCII, e um identificador numérico sempre tem precedência menor que um não numérico. Se todos os identificadores compartilhados forem iguais, a versão com mais identificadores terá precedência maior. Essas regras reproduzem a progressão padrão de alpha para beta e candidatos a lançamento sem atribuir significado especial a palavras específicas.

Metadados após o sinal de adição são validados, mas propositalmente excluídos da precedência. Assim, 1.0.0+linux e 1.0.0+windows são equivalentes apesar de diferentes.

Use a comparação rigorosa com segurança na automação

Um resultado determinístico pode servir como um pequeno e confiável ponto de decisão em sistemas maiores. Um pipeline de lançamento pode exigir que a versão proposta seja superior à implantada. Um atualizador pode decidir se um manifesto baixado representa atualização, reversão ou compilação equivalente.

Uma suíte de testes pode cobrir a sequência canônica de pré-lançamentos e rejeitar rótulos inválidos antes da publicação dos artefatos. A implementação não faz solicitações de rede, não consulta o relógio e não usa valores aleatórios; as mesmas entradas sempre produzem a mesma saída. Ela compara identificadores numéricos como sequências de dígitos, em vez de convertê-los em números JavaScript, preservando a ordem correta mesmo quando um identificador válido ultrapassa o intervalo de inteiros seguros.

O tamanho das entradas é limitado para manter o processamento previsível.

Proteja um pipeline de lançamento

Confirme que uma versão de pacote proposta tenha precedência maior que a versão implantada antes da publicação.

Avalie manifestos de atualização

Determine se um lançamento remoto é atualização, reversão ou compilação equivalente sem deixar os metadados influenciarem.

Valide sequências de pré-lançamento

Teste a ordem de versões alpha, beta, candidatas e finais, rejeitando strings de Semantic Versioning malformadas.

O que significa o valor de comparação?

A precedência -1 significa que a primeira versão é menor, 0 indica equivalência e 1 significa que a primeira é maior.

Os metadados de compilação afetam o resultado?

Não. Eles são validados, mas o Semantic Versioning os exclui das comparações de precedência.

Um pré-lançamento é inferior ao lançamento final correspondente?

Sim. Com números principal, secundário e de correção idênticos, a versão com identificadores de pré-lançamento tem precedência menor.

Zeros à esquerda são aceitos?

Identificadores numéricos principais, secundários, de correção e de pré-lançamento não podem ter zeros à esquerda, exceto o dígito zero.

Posso incluir uma v inicial ou omitir o número de correção?

Não. As entradas devem ser strings rigorosas de Semantic Versioning 2.0.0, como 1.2.3 ou 1.2.3-rc.1.

Quanto custa?

O executor no navegador está disponível para verificações interativas.

Tudo nesta página está disponível via API. Esta seção é para equipes que querem integrar a ferramenta aos próprios sistemas; quem não precisa disso pode simplesmente usar a ferramenta acima.

POSThttps://api.kit.forhosting.com/dev2/semver-compare

Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.

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"}'
{
  "first_version": "2.1.0-rc.1",
  "second_version": "2.1.0"
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "dev2.semver_compare",
  "status": "queued",
  "_links": {
    "result": "/tasks/tsk_…/result"
  }
}

A API é assíncrona: cada chamada devolve um task_id na hora. Se preferir polling, consulte o status a até 1 requisição por segundo.

por chamadaUS$ 0,002

Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.

max_chars_per_version1024
HTTPCódigoO que significa
401unauthorizedToken ausente ou inválido. Confira o header Authorization.
402insufficient_balanceSaldo insuficiente para esta tarefa. Faça uma recarga e tente de novo.
404unknown_typeEsse tipo de tarefa não existe. Confira o campo type no catálogo.
429rate_limitedMuitas requisições em pouco tempo. Espere um instante e tente de novo.

Entenda a ordem de pré-lançamento e os metadados de compilação

Quando a precedência é igual, greater_version é null porque nenhuma entrada supera a outra.

Use a comparação rigorosa com segurança na automação

Use o executor do navegador para uma verificação interativa ou chame a API por US$ 0,002 quando a comparação fizer parte de um fluxo repetível. Trate invalid_input como falha de qualidade dos dados que deve ser corrigida.

Ver a documentação completa do KIT →