Foto por Ross Findon no Unsplash

Recentemente, eu escrevi um post sobre as coisas que os desenvolvedores dizem e o que eles significam. Eu tive um monte de diversão escrevendo-o e gostei dos comentários que o post gerou. Há muito mais coisas que eu queria escrever sobre e eu planeio fazer um post de acompanhamento no futuro com mais coisas, mas havia um pouco de linguagem que eu sentia que merecia mais do que uma única explicação de parágrafo: Semver.

o que é o Semver? Semver é o diminutivo de versionamento semântico. Versionamento semântico é uma maneira padronizada de dar significado aos seus lançamentos de software. É uma forma de os autores de software se comunicarem sucintamente aos consumidores de seu software informações importantes que eles devem saber sobre este lançamento.

Semver é representado por apenas três números separados por períodos. Por exemplo, a versão atual do lodash, a partir da data de publicação deste post, é 4.17.11, que você pode encontrar em sua página de perfil github ou npm. Com este número eu posso facilmente dizer toda a informação de compatibilidade que eu preciso e pode tomar decisões sobre se eu devo atualizar para a última revisão e quanto trabalho que pode tomar para fazer isso.

cada número é um nível diferente de revisão, dependendo do que foi alterado na revisão. A leitura da esquerda para escrever o número representa a versão principal atual, a versão menor atual da versão principal atual, e a versão Patch atual da versão menor atual(maior.Menor.Remendo). Usando o exemplo Lodash acima, 4.17.11 significa o 11º adesivo desde a 17ª libertação menor, desde a 4ª libertação maior. Quando um número é aumentado todos os números para a direita começar de volta em zero.

uma versão de Patch é usada para significar que as alterações de código nesta revisão não adicionou quaisquer novas funcionalidades ou alterações de API e é compatível para trás com a versão anterior. É normalmente usado para significar uma correção de bug. A coisa mais importante a saber é que o código não mudou a forma como ele é usado. Usando o exemplo lodash acima, se uma nova revisão de patch for enviada, então a versão seria 4.17.12

Minor

uma libertação menor é usada para significar que a funcionalidade foi adicionada, mas o código é de outra forma compatível para trás. Mantendo o exemplo lodash, se uma nova função é adicionada ou um novo parâmetro opcional é adicionado a uma função existente, então a versão seria 4.18.0 . A coisa mais importante a lembrar é que esta nova funcionalidade é opcional e por que atualizar para esta versão não deve exigir alterações de código por parte do usuário

Importante

Quando você fizer alterações para a API pública e o código não é mais compatível e, em seguida, fez “quebrar” as alterações. Isto requer um grande aumento da revisão. Isto pode significar que uma funcionalidade foi removida ou alterada que requer que o usuário faça alterações ao código para aceitar a atualização. Usando o mesmo exemplo, uma versão maior seria de 5.0.0

pré-lançamento

as coisas são ligeiramente diferentes se a versão principal é um zero. Um número de versão Zero maior indica que o software está em rápido desenvolvimento e não tem uma API estável. Isto também significa que cada pequeno aumento pode ter mudanças de ruptura. Um exemplo disso é Reagir Nativo que está atualmente na versão 0.57.8 Isso significa que a atualização para a versão de 57 a partir de 56 pode exigir alterações de código e pode não ser compatível com outras dependências no projeto. As actualizações do Patch devem ainda ser consideradas compatíveis com o anterior

porque é que isto é importante?

depois de ler tudo isso, você pode estar pensando :” Eu não planeio publicar uma biblioteca ou um pacote npm. Porque é que saber isso ajuda?”Em primeiro lugar, recomendo vivamente que publique um pacote. Você vai aprender muito ao passar pelo processo. Em segundo lugar, como um desenvolvedor que traz essas bibliotecas e pacotes, é importante mantê-los atualizados e este sistema de versionamento ajuda a tomar decisões para atualizar suas dependências não apenas mais fáceis de fazer, mas automatizadas.

quando instalar um pacote a partir do npm, irá notar que o seu pacote.o json será actualizado e acabará por ser parecido com isto.:

"dependencies": { "react": "^16.6.3", "react-clean-form": "^2.1.2", "react-dom": "^16.6.3", "styled-components": "^4.1.1"},

você vai notar que na frente de cada um de seus números de versão é um carat. O que isso diz npm (ou fio) que você quer a versão mais recente que ainda é compatível ao contrário com o número da versão. Se você queria ter certeza de que você só tem atualizações de patch e não pequenas atualizações de versão, então você iria adicionar um tilde em vez do carat como este: "react": "~16.6.3" e, finalmente, se você apenas colocar o número da versão em, então você só vai obter essa versão específica. Basicamente, você está indicando em que nível de compatibilidade reversa você está confortável com.

esta convenção permite ao seu gestor de pacotes tomar decisões inteligentes para si. Se eu fosse clonar o projeto acima e executar npm install. Eu não teria reat versão 16.6.3, eu teria a versão 16.7.0 em vez disso. Isto é porque 16.7.0 ainda é compatível com 16.6.3, mas é mais atualizado com os últimos patches e recursos. Quando você executa a atualização do npm, ele não apenas instala a última versão compatível backward de acordo com suas regras, ele também carrega o número da versão em seu pacote.o json também. Quando executar o npm audit-fix, Isto diz ao npm para executar a actualização do npm nos pacotes que têm problemas de segurança conhecidos, para que possa obter os últimos ‘patches’. Se a correção está em uma versão que não se encaixa suas regras de conforto, Ele vai lhe dizer que você precisa corrigi-lo manualmente.

Semver é uma ferramenta poderosa. Com três números, os autores podem comunicar informações muito importantes para os consumidores de seu software. Isso nos permite, como consumidores, automatizar a tarefa tediosa de manter nosso software atualizado de acordo com o nosso nível de conforto e gastar mais tempo e as tarefas que amamos fazer: escrever um código incrível que resolve problemas. Para uma explicação mais completa de semver, eu recomendaria verificar semver.org

Deixe uma resposta

O seu endereço de email não será publicado.