1001Ferramentas
⬆️Dev

Semver Bump

Incrementa uma versão SemVer (major, minor, patch ou prerelease). Aceita formato com ou sem prefixo "v".

Bump de versão semântica, inclusive a partir de pré-lançamento

Escolha a versão atual e o tipo de incremento, e a página aplica as regras do versionamento semântico. O caso que costuma surpreender é o do pré-lançamento: quando a versão atual já é algo como 1.2.3-rc.1, um bump de patch devolve 1.2.3, e não 1.2.4 — porque o pré-lançamento já estava reservando aquele número, e lançar é justamente tirar o sufixo.

A regra completa segue o que o semver do npm faz. Major incrementa, exceto quando minor e patch já são zero e existe pré-lançamento; minor incrementa, exceto quando patch é zero e existe pré-lançamento; patch incrementa, exceto quando existe pré-lançamento. Em todos os casos o build metadata é descartado, porque o semver não o considera parte da identidade da versão.

Vale lembrar da regra de precedência, que é o que dá sentido a tudo isso: uma versão com pré-lançamento vem ANTES da mesma versão sem ele, ou seja 1.0.0-rc.1 é menor que 1.0.0. É por isso que faixa como acento circunflexo seguido de 1.0.0 não pega pré-lançamento nenhum por padrão — quem quer testar candidato precisa pedir explicitamente.

Perguntas frequentes

Por que o circunflexo se comporta diferente na versão zero?
Porque ele libera o que não mexe no dígito mais à esquerda que seja diferente de zero. Em 1.2.3 esse dígito é o major, então aceita até 1.x.x; em 0.2.3 é o minor, então aceita só 0.2.x. É a regra que mais pega desprevenido, e existe porque antes da versão 1 a norma não promete estabilidade nenhuma.
O que o build metadata faz, então?
Serve para carimbar a origem do artefato — hash do commit, número da build de integração contínua — sem afetar ordenação nem resolução de dependência. Duas versões que só diferem no build são consideradas a mesma versão, e a norma diz que o comportamento ao encontrar as duas é indefinido. Por isso não use build para distinguir release.
Que identificador de pré-lançamento a página usa?
Partindo de uma versão já lançada, ela reserva o patch seguinte com o sufixo rc.0, que é a convenção mais comum. O npm sem argumento usaria apenas o número zero. Partindo de um pré-lançamento existente, ela avança o último identificador numérico e preserva o nome que você já vinha usando, seja alpha, beta ou outro.

Ferramentas Relacionadas