Calculadora de intervalos SemVer
Utilitários de API e pacotes para desenvolvedores

Calculadora de Intervalos e Compatibilidade SemVer

Teste intervalos de versionamento semântico (SemVer) com acento circunflexo (^), til (~), hífens, x-ranges e pré-lançamentos em tempo real.

Privacidade 100% no cliente
Zero transmissão ao servidor
Predefinições:
Intervalo SemVer e entrada de candidatos
Normalized:>=18.2.0 <19.0.0-0 || >=19.0.0 <20.0.0-0
Taxa de satisfação
50%(4 de 8 aprovadas)
Menor versão compatível
v18.2.0
Maior versão compatível
v19.0.1
StatusVersão AvaliadaResultado e Motivo
Satisfaz18.2.0Satisfies clause #1 (^18.2.0): [18.2.0, 19.0.0)
Satisfaz18.3.1Satisfies clause #1 (^18.2.0): [18.2.0, 19.0.0)
Satisfaz19.0.0Satisfies clause #2 (^19.0.0): [19.0.0, 20.0.0)
Satisfaz19.0.1Satisfies clause #2 (^19.0.0): [19.0.0, 20.0.0)
Rejeitado19.1.0-canary.1preDoes not satisfy any clause in the range expression.
Rejeitado18.1.9Does not satisfy any clause in the range expression.
Rejeitado20.0.0Does not satisfy any clause in the range expression.
Rejeitado17.0.2Does not satisfy any clause in the range expression.

Motor SemVer 2.0 100% no Navegador

Avaliação instantânea e determinística em total conformidade com as especificações oficiais do npm e SemVer 2.0.

Confidencialidade com Zero Transmissão

Suas listas de dependências e nomes de pacotes internos permanecem estritamente na memória do seu navegador.

Suporte Abrangente a Sintaxes de Intervalo

Avaliação profunda de Caret (^), Tilde (~), intervalos de hífen (-), curingas (*, 1.x), OR lógico (||) e regras de pré-lançamento.

Referência técnica e guia de arquitetura

Calculadora de Intervalos SemVer e Satisfação de Versões — Guia de referência

Teste intervalos de versionamento semântico (SemVer) com acento circunflexo (^), til (~), hífens, x-ranges e pré-lançamentos em tempo real.

Parâmetros principais e controles

Expressão de intervalo (Range Expression)String

Consulta de intervalo SemVer com suporte a comparadores (>=, <), circunflexo (^), til (~), caracteres curinga (1.x, *), intervalos por hífen (1.0.0 - 2.0.0) e uniões (||).

Padrão: ^1.2.3 || ~2.0.0
Versão alvo (Target Version)String

Cadeia de versão a ser testada contra o intervalo, incluindo suporte a identificadores de pré-lançamento e metadatos de compilação.

Padrão: 1.4.0
Incluir pré-lançamentos (Include Pre-releases)Boolean

Quando ativado, permite que tags de pré-lançamento (ex.: 1.3.0-rc.1) satisfaçam intervalos mesmo sem comparadores explícitos de pré-versão.

Padrão: false
Modo flexível (Loose Mode)Boolean

Ativa a análise permissiva para versões não canônicas, tolerando prefixos 'v', ausência de dígitos de patch (ex.: 1.2) e espaços.

Padrão: false

Dicas profissionais e melhores práticas

Pelas normas do SemVer 2.0.0 e do npm

Pelas normas do SemVer 2.0.0 e do npm semver, ^0.2.3 limita-se a >=0.2.3 <0.3.0, pois alterações que quebram compatibilidade podem ocorrer em versões menores 0.x. Para ^0.0.3, a versão é estritamente congelada em 0.0.3.

Uma versão com identificador de

Uma versão com identificador de pré-lançamento (ex.: 1.2.3-alpha.1) NÃO satisfará intervalos amplos como >=1.0.0 a menos que algum comparador declare exatamente a mesma tupla [major, minor, patch].

Intervalos por hífen exigem espaços em

Intervalos por hífen exigem espaços em branco em ambos os lados ('1.2.3 - 2.0.0'). Omitir os espaços ('1.2.3-2.0.0') faz com que '-2.0.0' seja tratado como tag de pré-lançamento da versão 1.2.3.

Segundo a cláusula 10 do SemVer 2.0.0

Segundo a cláusula 10 do SemVer 2.0.0, metadatos de build (+build.2024, +sha.c0ffee) têm peso zero na precedência: 1.0.0+1 e 1.0.0+999 possuem exatamente o mesmo nível de satisfação.

Problemas comuns e solução de problemas

Versão de pré-lançamento não satisfaz intervalo amplo (ex.: 2.0.0-rc.1 rejeitada por >=1.0.0)

O SemVer isola pré-lançamentos para evitar a inclusão de código instável em produção. Ative 'Incluir pré-lançamentos' ou use limites explícitos como '>=1.0.0 || >=2.0.0-0'.

O analisador rejeita versões com prefixo 'v' (ex.: 'v1.4.2')

A especificação canônica do SemVer 2.0.0 não admite o prefixo 'v'. Ative o 'Modo flexível' ou limpe a entrada com semver.clean() antes da avaliação.

Comportamentos divergentes entre til (~) e circunflexo (^) causam deriva de dependências

Lembre-se de que ~1.2.3 restringe atualizações a correções de patch (<1.3.0), enquanto ^1.2.3 aceita novas funcionalidades menores (<2.0.0). Fixe versões exatas (1.2.3) para compilações 100% reproduzíveis sem lockfile.

Perguntas frequentes (FAQ)

Qual é a principal diferença entre os operadores circunflexo (^) e til (~)?▼

O circunflexo (^) permite atualizações que não alterem o dígito não-zero mais à esquerda na tupla [major, minor, patch]. Por exemplo, ^1.2.3 aceita >=1.2.3 <2.0.0, enquanto ^0.2.3 aceita >=0.2.3 <0.3.0. O til (~) permite apenas atualizações de patch quando a versão menor é declarada: ~1.2.3 aceita >=1.2.3 <1.3.0 e ~1.2 aceita >=1.2.0 <1.3.0.

Por que um intervalo como '>=1.0.0 <3.0.0' não aceita '2.0.0-beta.1'?▼

Pela especificação do npm semver, uma versão preliminar só pode satisfazer um intervalo se o intervalo incluir um comparador com a mesma tupla [major, minor, patch]. Como nem 1.0.0 nem 3.0.0 correspondem a 2.0.0, a versão de pré-lançamento é excluída por segurança contra builds instáveis.

Como a ordem de precedência de identificadores de pré-lançamento é comparada?▼

Os identificadores de pré-lançamento são separados por pontos e avaliados da esquerda para a direita. Segmentos numéricos são comparados numericamente, enquanto alfanuméricos usam ordem ASCII. Identificadores numéricos têm menor precedência que os alfanuméricos (ex.: 1.0.0-1 < 1.0.0-alpha < 1.0.0-beta < 1.0.0).

Como caracteres curinga e X-Ranges (ex.: '1.2.x', '1.*') são expandidos?▼

Os X-Ranges tratam 'x', 'X' ou '*' como curingas para números ausentes. '1.x' ou '1.*' expande para '>=1.0.0 <2.0.0-0'. '1.2.x' ou '1.2.*' expande para '>=1.2.0 <1.3.0-0'. Uma sequência vazia ou '*' corresponde a qualquer versão válida (>=0.0.0).

Os metadatos de compilação (+build) afetam a correspondência de intervalos?▼

Não. Conforme o item 10 da especificação SemVer 2.0.0, os metadatos de compilação são desconsiderados na avaliação de precedência. Versões que diferem apenas nos metadatos (como 1.0.0+build1 e 1.0.0+build2) satisfazem rigorosamente os mesmos intervalos.

Ferramentas e utilitários relacionados

Todas as ferramentas →