Nx vs Lerna: qual ferramenta de monorepo para CI?
Nx é uma plataforma de build de monorepo completa com cache e execuções afetadas; Lerna foca em versionamento e publicação - e o Lerna moderno roda sobre o Nx por baixo.
Nx é um sistema de monorepo rico em recursos com um grafo de tasks, cache de computação (local e remoto), generators e plugins. Lerna gerencia versionamento e publicação de monorepo; desde que o time do Nx assumiu, o Lerna moderno usa o Nx para a execução de tasks.
| Nx | Lerna | |
|---|---|---|
| Escopo | Plataforma de build (cache, plugins) | Versionamento + publicação |
| Cache de task/computação | Sim (local + remoto) | Via Nx (Lerna moderno) |
| Execuções afetadas | Sim (nx affected) | Sim (via Nx) |
| Publicação | Externa / plugins | Recurso central |
| Relação | Alimenta o Lerna moderno | Construído sobre o Nx agora |
No CI
Para cache, o grafo de tasks e execuções apenas do que foi afetado, o Nx é o motor - e o Lerna moderno já o usa por baixo. A força distinta do Lerna continua sendo o versionamento e a publicação coordenados. Muitos times usam Nx para tasks de CI rápidos e Lerna para releases, ou Nx sozinho com um passo de publicação separado. Eles cooperam mais do que competem agora.
Acelere
Habilite o cache remoto do Nx entre jobs de CI e restrinja aos projetos afetados - o maior ganho de velocidade. Tasks que ainda rodam em um cache miss executam em runners de CI; runners gerenciados mais rápidos encurtam essas.
O veredito
Quer uma plataforma de build de monorepo completa com cache e execuções afetadas: Nx. Precisa de versionamento e publicação coordenados: Lerna (que agora roda sobre o Nx). Muitos monorepos usam Nx para tasks e Lerna para releases.