Lerna vs Nx: Qual ferramenta de monorepo JS para CI?
Lerna foi pioneira no versionamento e publicação de monorepos JS; Nx acrescenta cache poderoso e orquestração de tarefas (e agora mantém o Lerna).
Lerna é uma ferramenta clássica de monorepo JavaScript, conhecida por versionar e publicar pacotes. Nx é uma plataforma de monorepo mais ampla, com cache de computação, detecção de afetados e geradores. Notavelmente, a Nrwl (a equipe do Nx) assumiu a manutenção do Lerna, e o Lerna moderno pode usar o executor de tarefas do Nx por baixo dos panos.
| Lerna | Nx | |
|---|---|---|
| Força principal | Versionamento + publicação | Cache + orquestração de tarefas |
| Cache de tarefas | Via integração com Nx | Nativo (local + remoto) |
| Detecção de afetados | Limitada (agora movida a Nx) | Grafo de projeto nativo |
| Geradores / plugins | Não | Extensivo |
| Relação | Mantido pela equipe do Nx | n/a |
No CI
Para pura velocidade no CI - cachear saídas de tarefas, rodar apenas projetos afetados, compartilhar um cache remoto - Nx é o motor mais forte, e o Lerna moderno pode delegar a execução de tarefas ao Nx para obter esses benefícios. O valor duradouro do Lerna é seu fluxo de versionamento e publicação para repositórios com múltiplos pacotes. Muitas equipes usam Nx para o grafo de build/test e mantêm o Lerna especificamente para bumps de versão coordenados e publicação no npm.
Escolhendo para pipelines
Quer builds rápidos apenas do afetado com cache e geradores: Nx. Precisa de versionamento e publicação polidos de múltiplos pacotes: Lerna (agora movido a Nx para tarefas). Não são estritamente um ou outro, dada a manutenção compartilhada e a execução de tarefas apoiada em Nx.
O veredito
Quer o cache e a orquestração de tarefas mais fortes: Nx. Precisa de versionamento/publicação maduros para muitos pacotes: Lerna (que pode rodar tarefas via Nx). Os dois agora se sobrepõem - use Nx para builds, Lerna para releases, se precisar de ambos.