DEV Community

Cover image for Versionamento semântico com NPM
Filipe Roberto Beck
Filipe Roberto Beck

Posted on

Versionamento semântico com NPM

Vou tentar explicar os conceitos sobre versionamento semântico que considero mais úteis para o usuário. Para informações detalhadas, acesse as fontes no final do artigo.

Versionamento semântico é um padrão de versionamento de APIs que permite a separação entre mudanças que quebram a compatibilidade com versões anteriores (major), mudanças que adicionam funcionalidades sem quebrar a retrocompatibilidade (minor) e mudanças que não afetam a funcionalidade (patch). Consiste basicamente de 3 números separados por ponto.

Patch

É o 3° número. Qualquer atualização que não adicione, remova, ou modifique alguma funcionalidade deve incrementar esse dígito. Ex.: correções de bugs.
Se você quiser manter a versão major e minor de sua dependência e atualizar apenas o patch, inclua um ~ antes da versão no arquivo package.json. Ex.: ~3.4.1 - instala ou atualiza a versão 3.4 que contenha o patch mais alto a partir de 1.

Minor

É o 2° número. Qualquer atualização que adicione funcionalidades sem quebrar o código que usa versões anteriores deve incrementar esse dígito. Ex.: adição de métodos em uma classe.
Se você quiser manter a versão major e atualizar a minor e patch de sua dependência, inclua um ^ antes da versão no arquivo package.json. Ex.: ^3.4.1 - instala ou atualiza a versão 3 que contenha o minor e patch mais alto a partir de 4.1.

Major

É o 1° número. Qualquer atualização que quebre a retrocompatibilidade deve incrementar esse dígito. Ex.: Remoção de uma função ou a remoção/renomeação de um método de classe.
Se você quiser manter a sua dependência sempre atualizada com a última versão, use um * como versão no arquivo package.json.

Fontes:

Ferramenta para testar a sintaxe: https://semver.npmjs.com/

Top comments (2)

Collapse
 
acaciomartins profile image
Acácio Amorelli Martins

Muito bom!

Collapse
 
devmaroto profile image
Pedro Paulo

Valeu man !! estava procurando algo desse modelo para aprender !!!