O que é o Lerna? A ferramenta de versionamento de monorepos explicada
O Lerna é uma ferramenta para gerenciar monorepos JavaScript, mais conhecida por versionar e publicar muitos pacotes a partir de um único repositório de forma coordenada.
O Lerna foi pioneiro no workflow de monorepo em JavaScript. Enquanto ferramentas mais novas focam no cache de build, a força duradoura do Lerna é o gerenciamento de releases: decidir quais pacotes mudaram, incrementar suas versões e publicá-los no npm juntos, com suporte tanto a versionamento fixo quanto independente.
O que é o Lerna
O Lerna é uma ferramenta de gerenciamento de monorepo para JavaScript e TypeScript. Ele trabalha com workspaces para executar comandos entre pacotes, detectar quais pacotes mudaram e lidar com versionamento e publicação. O Lerna moderno se integra com o Nx por baixo dos panos para cache de tarefas e consciência de grafo.
Versionamento e publicação
O Lerna suporta dois modos: fixo, onde todos os pacotes compartilham uma versão, e independente, onde cada pacote versiona por conta própria. "lerna version" incrementa versões e cria tags git com base no que mudou, e "lerna publish" envia os pacotes atualizados para um registry. Esse fluxo de release coordenado é sua funcionalidade característica.
Um exemplo de uso
Versione os pacotes alterados e depois publique-os.
# bump versions for changed packages and tag
npx lerna version
# publish the updated packages to npm
npx lerna publish from-gitPapel em CI/CD
Em CI/CD, o Lerna normalmente é executado no pipeline de release: após um merge, ele determina os pacotes alterados, incrementa versões, tagueia o release e publica no registry, tudo em um passo coordenado. Combinado com sua execução de tarefas impulsionada pelo Nx, ele também pode fazer build e test apenas dos pacotes afetados, mantendo os pipelines de release eficientes.
Alternativas
O Changesets é uma alternativa popular focada puramente em versionamento e changelogs. Nx e Turborepo lidam com cache de build, mas se apoiam em ferramentas como o Changesets para releases. pnpm e Yarn workspaces fornecem a estrutura multi-pacote subjacente. O Lerna continua sendo uma escolha sólida para publicação coordenada de monorepos.
Principais conclusões
- O Lerna gerencia versionamento e publicação em um monorepo JS/TS.
- Ele suporta versionamento fixo ou independente e releases coordenados.
- Em CI ele impulsiona o passo de release: versionar, taggear e publicar os pacotes alterados.