Testador de faixas semver
Semver Range Tester
Verifica quais versões satisfazem uma faixa, compara duas versões e ordena uma lista por precedência.
Responde às duas perguntas que as pessoas de fato têm sobre versionamento semântico: esta versão satisfaz este intervalo, e qual destas versões o npm instalaria. Também compara duas versões por precedência e mostra o que cada incremento de `npm version` produziria.
Intervalo
Abrange: 1.0.0 ou posterior e anterior a 2.0.0
A gramática de intervalos do npm: `^` `~` `x` `-` `||` e os operadores de comparação. Isso não faz parte do semver.org, que só define o formato da versão e a ordem dela.
Versões
Uma por linha, ou separadas por vírgula.
Quais casam
- —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
- casa1.0.0
- casa1.2.0seria instalada
- —2.0.0-rc.1
- —2.0.0
- —2.1.3
Comparar duas
Ordem
1.0.0-beta.11 é maior
Diferença
prerelease
A precedência segue à risca a cláusula 11 do semver.org, metadados de build incluídos — ou seja, ignorados.
Próxima versão
| major | 2.0.0 |
|---|---|
| minor | 1.3.0 |
| patch | 1.2.4 |
| premajor | 2.0.0-alpha.0 |
| preminor | 1.3.0-alpha.0 |
| prepatch | 1.2.4-alpha.0 |
| prerelease | 1.2.4-alpha.0 |
O que o `npm version <tipo>` produziria.
Tem uma regra que surpreende todo mundo: um pré-lançamento só entra num intervalo quando o próprio intervalo menciona um pré-lançamento do mesmo major.minor.patch. É por isso que ^1.0.0 não casa com 2.0.0-beta.1, e por isso que uma tag rc nunca se instala sozinha sem querer.
Como usar
Escreva o intervalo
`^1.0.0`, `~1.2.3`, `>=1.2.7 <1.3.0`, `1.2.3 - 2.3.4` e `||` funcionam todos. Abaixo aparece uma descrição em linguagem simples do que ele casa.
Cole as versões que você tem
Uma por linha, ou separadas por vírgula: a saída de `npm view <pkg> versions` cola direto. Cada uma é marcada como casando ou não, e a que o npm instalaria recebe um rótulo.
Compare duas, ou planeje o próximo release
O painel de comparação segue exatamente a cláusula 11 do semver.org. A tabela de incrementos mostra o que `npm version major`, `preminor` e os demais produziriam a partir de um ponto de partida dado.
Perguntas frequentes
Por que `^1.0.0` não casa com `2.0.0-beta.1`?
Por duas razões ao mesmo tempo. `^1` nunca chega à major 2, e, separadamente, um pré-lançamento só satisfaz um intervalo quando o próprio intervalo nomeia um pré-lançamento do mesmo major.minor.patch. Essa segunda regra é o motivo de uma tag `rc` nunca se instalar sozinha por acidente.
Por que `^0.2.3` se comporta diferente?
Abaixo de 1.0.0 o acento circunflexo se aperta até a minor: `^0.2.3` permite 0.2.x, mas não 0.3.0, porque se entende que um projeto 0.x quebra a cada minor. É a regra do npm, não a do semver.org, e surpreende as pessoas toda vez.
`1.0.0+build.1` é diferente de `1.0.0`?
Strings diferentes, mesma precedência: a cláusula 10 diz que metadados de build são ignorados na comparação. O que significa que uma ordenação de versões que só diferem em metadados de build não é estável, e duas versões assim não podem ser ordenadas de jeito nenhum.
A sintaxe de intervalos faz parte do semver?
Não. O semver.org define o formato de versão e como duas versões se comparam, e para aí. `^`, `~`, `x` e `||` são a gramática de intervalos do npm, que outros ecossistemas emprestaram ou substituíram: Cargo, Composer e pip diferem cada um nos detalhes.
Pode receber de
Comparar OpenAPI
OpenAPI Diff
Compara dois documentos OpenAPI e separa as mudanças que quebram compatibilidade das que só acrescentam.
Escolher licença
Licence Chooser
Compara as licenças open source mais comuns por obrigações e compatibilidade e gera o arquivo LICENSE.
Formatador e validador de JSON
JSON Formatter & Validator
Formata, minifica e valida JSON, apontando a linha e a coluna exatas de um erro de sintaxe.
Formatador e validador de YAML
YAML Formatter & Validator
Reindenta YAML de forma consistente, valida e aponta os erros de tabulação e âncora que quebram os parsers.
Em seguida
Estas aceitam o que esta ferramenta produz, então o resultado pode ir direto.
Formatador e validador de JSON
JSON Formatter & Validator
Formata, minifica e valida JSON, apontando a linha e a coluna exatas de um erro de sintaxe.
Escolher licença
Licence Chooser
Compara as licenças open source mais comuns por obrigações e compatibilidade e gera o arquivo LICENSE.
Comparar OpenAPI
OpenAPI Diff
Compara dois documentos OpenAPI e separa as mudanças que quebram compatibilidade das que só acrescentam.
JSON ⇄ CSV conversor
JSON ⇄ CSV
Achata JSON aninhado em colunas ou reconstrói objetos a partir de uma tabela, com uma regra de nome de coluna por caminho com pontos.
Comparar JSON
JSON Diff
Compara dois documentos JSON estruturalmente, ignorando a ordem das chaves e informando os caminhos adicionados, removidos e alterados.
JSON para TypeScript
JSON to TypeScript
Infere interfaces ou tipos TypeScript a partir de um exemplo de JSON, mesclando campos opcionais e de união.