O que é o Nx? O sistema de build para monorepos explicado
O Nx é um sistema de build para monorepos que entende o grafo de dependências entre projetos, faz cache dos resultados de tarefas e executa apenas o que suas mudanças de fato afetam.
O Nx traz builds inteligentes e orientados a cache para monorepos JavaScript e TypeScript (e além). Ao modelar como os projetos dependem uns dos outros, ele consegue pular trabalho não afetado, reutilizar resultados em cache e paralelizar tarefas, mantendo a CI rápida mesmo à medida que o repositório cresce.
O que é o Nx
O Nx é um sistema de build extensível e uma ferramenta de monorepo. Ele constrói um grafo de projetos a partir do seu workspace, executa tarefas (build, test, lint) entre projetos e faz cache da saída de cada tarefa. Plugins adicionam suporte de primeira classe a frameworks como React, Angular, Node e mais.
Comandos affected e cache
O Nx calcula quais projetos uma mudança afeta percorrendo o grafo de dependências, então "nx affected" executa tarefas apenas para os projetos impactados, em vez de todo o repositório. Seu cache de computação armazena os resultados das tarefas indexados por inputs; se nada relevante mudou, o Nx reproduz a saída em cache instantaneamente, em vez de reexecutar.
Um exemplo de uso
Execute apenas as tarefas afetadas pelas mudanças recentes.
# build everything affected by changes since main
nx affected -t build --base=main
# run a task for one project
nx test my-appPapel em CI/CD
Em CI, os comandos affected do Nx mais o cache reduzem drasticamente o tempo do pipeline em monorepos, testando e construindo apenas o que mudou e reproduzindo resultados em cache. Um cache remoto compartilhado (Nx Cloud ou self-hosted) permite que a CI reutilize resultados entre execuções e máquinas. Em runners gerenciados que retêm um cache quente, esses pipelines de monorepo permanecem rápidos e baratos, com auto-retry cobrindo falhas transitórias.
Alternativas
O Turborepo é um task runner de monorepo mais leve e semelhante. O Bazel escala para repositórios poliglotas maiores com mais rigor e configuração. O Lerna cuida do versionamento e da publicação. O Nx é preferido por seu rico ecossistema de plugins e pelo equilíbrio entre poder e facilidade em monorepos JS/TS.
Principais conclusões
- O Nx modela um grafo de projetos do monorepo para executar apenas as tarefas afetadas.
- O cache de computação reproduz resultados de tarefas inalteradas instantaneamente.
- Em CI, comandos affected mais um cache compartilhado reduzem o tempo de build do monorepo.