Skip to content
Latchkey

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.

Common Lerna commands
# bump versions for changed packages and tag
npx lerna version

# publish the updated packages to npm
npx lerna publish from-git

Papel 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.

Guias relacionados