Como usar
- Digite uma Versão, como 1.4.0, e, se quiser, uma versão em Comparar com para ordená-la em relação a ela.
- Escolha um Incremento para ver a próxima versão. Para um Pré-lançamento, dê o nome dele em Nome do pré-lançamento.
- Digite um Intervalo para verificar se a versão o atende, e leia Como o intervalo se lê para ver o que cada parte dele significa.
- Leia Versão após o incremento, Ordem e Verificação do intervalo para a resposta de que você precisa.
Como as versões são ordenadas
O SemVer 2.0.0 compara os números maior, menor e de correção como números. Uma versão com etiqueta de pré-lançamento vem antes da mesma versão sem ela. Os identificadores de pré-lançamento são comparados um a um: números como números, texto em ordem ASCII, e um número antes de um texto. Os metadados de build, a parte depois de +, não contam.
- A ordem dos exemplos da especificação: 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, 1.0.0.
- Um v no início, como em v1.4.0, é aceito e não faz parte da versão.
Como funciona um incremento
Um incremento maior sobe o primeiro número e põe os outros dois em 0. Um incremento menor ou de correção faz o mesmo com a sua parte. Uma versão que ainda é pré-lançamento perde a etiqueta quando o incremento subiria a versão final de qualquer forma: 1.0.0-alpha vira 1.0.0 com um incremento maior, como faz o node-semver. Um incremento de pré-lançamento começa a próxima correção com o nome que você der, como 1.4.1-beta.0, ou conta para cima o último número de um pré-lançamento existente, como de beta.1 para beta.2.
Como os intervalos são lidos
A sintaxe de intervalos segue o node-semver, o pacote que o npm usa, e a gramática do README. Cada forma representa comparadores: ^1.3.0 significa >=1.3.0 <2.0.0-0, ~1.2.3 significa >=1.2.3 <1.3.0-0, e 1.2.x significa >=1.2.0 <1.3.0-0. Os comparadores de um mesmo conjunto precisam valer todos. Conjuntos unidos por || são alternativas, e um conjunto vazio aceita qualquer versão, como faz *.
Pré-lançamentos e intervalos
Uma versão de pré-lançamento, como 1.5.0-beta.1, só atende a um intervalo quando um dos comparadores do seu conjunto tem o mesmo 1.5.0 com uma etiqueta de pré-lançamento. Versões inacabadas ficam, portanto, fora dos intervalos por padrão, como explica o README do node-semver. A verificação desta página segue essa regra.
Exemplo resolvido: 1.4.0 com incremento menor e ^1.3.0 || 2.x
A versão 1.4.0 é maior que 1.4.0-beta.2, porque uma versão final é maior que o seu pré-lançamento. Um incremento menor dá 1.5.0. O intervalo ^1.3.0 || 2.x se lê como >=1.3.0 <2.0.0-0 ou >=2.0.0 <3.0.0-0, e 1.4.0 atende ao primeiro conjunto.
| Entrada | Resultado |
|---|---|
| 1.4.0 comparada com 1.4.0-beta.2 | 1.4.0 é maior que 1.4.0-beta.2. |
| Incremento menor de 1.4.0 | 1.5.0 |
| 1.4.0 em ^1.3.0 || 2.x | 1.4.0 atende a ^1.3.0 || 2.x. |
Perguntas frequentes
1.0.0+build.1 é a mesma versão que 1.0.0?
Para ordenar e para intervalos, sim. Os metadados de build depois de + não contam na precedência do SemVer, então as duas versões ocupam o mesmo lugar em uma ordem. A página mesmo assim mostra o texto de build, para que você o veja.
Por que 1.4.0-beta.2 é menor que 1.4.0?
Um pré-lançamento é instável e pode não cumprir a compatibilidade que o seu número promete, então o SemVer o coloca antes da versão final com os mesmos números. Assim, 1.4.0-beta.2 vem antes de 1.4.0, e 1.4.0 vem antes de 1.4.1.
O intervalo ^1.3.0 aceita a 2.0.0?
Não. Um intervalo com circunflexo mantém o primeiro número diferente de zero, então ^1.3.0 significa pelo menos 1.3.0 e abaixo de 2.0.0. Escreva também || 2.x se a segunda versão maior deve ser aceita, como no exemplo.
Qual é a diferença entre ~1.2 e ^1.2?
O intervalo com til ~1.2 significa >=1.2.0 <1.3.0-0, então aceita mudanças de correção, como 1.2.9, e recusa 1.3.0. O intervalo com circunflexo ^1.2 significa >=1.2.0 <2.0.0-0, então aceita também 1.3.0 e 1.9.9, mas não 2.0.0.
Por que um intervalo recusa 1.5.0-beta.1?
Pré-lançamentos ficam de fora, a não ser que um comparador cite a mesma versão com uma etiqueta de pré-lançamento, como >=1.5.0-beta.0. O node-semver faz essa escolha porque pré-lançamentos mudam depressa e podem quebrar coisas.
Minhas versões são enviadas para algum servidor?
Não. A versão, o intervalo e a comparação são lidos e verificados no seu navegador, e nada do que você digita é guardado.
Fontes
- Semantic Versioning 2.0.0 (em inglês): the specification
- node-semver README (em inglês): ranges and the range grammar (npm)
- node-semver README (em inglês): prerelease tags (npm)
- node-semver repository (em inglês), licença ISC (npm)
Números e texto verificados pela última vez em terça-feira, 10 de novembro de 2026.