Você já deve ter visto algo assim no package.json
:
"react": "^18.2.0"
E aí surge a dúvida:
“Mas que raios significam esses números? É só o dev mostrando que sabe contar?”
Não, jovem padawan. Isso é Semantic Versioning — o famoso SemVer — e ele é mais importante do que parece.
📦 O formato
SemVer segue o padrão:
MAJOR.MINOR.PATCH
Exemplo: 2.5.1
significa:
MAJOR (2) → Mudanças que quebram compatibilidade (breaking changes).
Tipo quando você atualiza e metade do seu código para de funcionar 😅.MINOR (5) → Novos recursos, mas compatíveis com a versão anterior.
É como adicionar novas pizzas no cardápio sem tirar as antigas.PATCH (1) → Correções de bugs e ajustes pequenos.
Aquele “remendinho” que ninguém percebe… até perceber.
💡 Por que importa?
- Te ajuda a saber o tamanho da treta antes de atualizar.
- Facilita comunicação entre equipes.
- Evita “surpresas” no deploy — embora a gente saiba que sempre rola.
⚠️ O cuidado com ^
e ~
No npm/yarn, esses símbolos definem como a versão pode variar:
-
^1.2.3
→ Pode atualizar MINOR e PATCH, mas não MAJOR. -
~1.2.3
→ Pode atualizar só o PATCH.
📌 Ou seja: aquele npm install
inocente pode te trazer um bug fresquinho se você não prestar atenção.
🎯 Moral da história
- Confie no SemVer (mas verifique o changelog).
- MAJOR = risco alto
- MINOR = recurso novo
- PATCH = bug corrigido
E lembre-se: nem todo projeto segue SemVer direito… às vezes, a galera inventa moda. 😏
💬 E aí, você segue SemVer ou só atualiza e reza? Conta aí nos comentários.