DEV Community

Aline Bezzoco
Aline Bezzoco

Posted on • Edited on

2

Como resolver problemas de versionamento dos pacotes no Lerna

Um problema que pode se tornar muito comum é conflitos de versionamento do Lerna. Vamos a um exemplo:

Você tem uma lib (biblioteca) onde duas pessoas desenvolvedoras fazem a manutenção do mesmo, porém numa última atualização aconteceu de um dev sem querer rodar o lerna publish direto de uma branch local e não na main (branch principal) como é mais comum. Acontece é que um tempo depois você também precisa atualizar o pacote e quando tenta na branch principal (que seria o correto), dá um erro informando que a versão a ser atualizada é bem diferente da atual. Mas por que isso acontece? Porque a última branch que foi feita a atualização lançou uma versão X enquanto a outra está com uma versão totalmente defasada (quando atualizamos o pacote com o lerna o mesmo atualiza os package.json e o lerna.json. A "solução" seria fazer um novo merge com as infos do pacote atualizadas para a última versão, porém muitas das vezes acontece da branch ser deletada minutos depois que é feito o merge na branch principal (eu particularmente não gosto de fazer dessa forma).

A vantagem é que o Lerna possui uma opção chamada "Custom Version", ou seja, você mesmo pode atribuir a versão que quer para o seu pacote (use com sabedoria). Uma forma mais rápida e segura de resolver os problemas de versionamento que podem ocorrer.

Quando você rodar o lerna publish no terminal irá aparecer essas seguintes opções:

Print da tela de um terminal com as opções de versão do pacote com a opção do custom version

Basta selecionar o "Custom Version" e e aí é só digitar a tag a versão que você quer. Depois disso é seguir o restante do procedimento padrão de publicação de pacotes do Lerna :)


Para finalizar, uma observação: claro que o cenário ideal seria a automação do publish através do CI e afins, mas existe também um outro cenário da atualização dos pacotes de forma manual. Então a solução seria para esses casos, beleza?

Então é isso. Até a próxima!

Reinvent your career. Join DEV.

It takes one minute and is worth it for your career.

Get started

Top comments (0)

This post blew up on DEV in 2020:

js visualized

🚀⚙️ JavaScript Visualized: the JavaScript Engine

As JavaScript devs, we usually don't have to deal with compilers ourselves. However, it's definitely good to know the basics of the JavaScript engine and see how it handles our human-friendly JS code, and turns it into something machines understand! 🥳

Happy coding!

👋 Kindness is contagious

Dive into an ocean of knowledge with this thought-provoking post, revered deeply within the supportive DEV Community. Developers of all levels are welcome to join and enhance our collective intelligence.

Saying a simple "thank you" can brighten someone's day. Share your gratitude in the comments below!

On DEV, sharing ideas eases our path and fortifies our community connections. Found this helpful? Sending a quick thanks to the author can be profoundly valued.

Okay