Turborepo ajuda a gerenciar grandes monorepos feitos em JavaScript ou TypeScript, através da análise, armazenamento em cache, paralelismo e otimização de tarefas de build para acelerar o processo. Em grandes monorepos, os projetos geralmente dependem uns dos outros; refazer o build de todas as dependências a cada alteração é ineficiente e demorado, mas o Turborepo facilita as coisas. Ao contrário do Nx, a configuração padrão do Turborepo usa vários arquivos package.json — um por projeto — o que permite ter dependências com versões diferentes (várias versões do React, por exemplo) em um único monorepo, algo que o Nx desencoraja. Embora possa ser considerado um antipadrão, isso resolve alguns casos de uso, como migrar de multi para monorepo, onde as equipes podem temporariamente precisar de várias versões de dependências. Na nossa experiência, o Turborepo é bastante simples de configurar e tem um bom desempenho.
Um dos temas que parece despertar um interesse perene em nossas discussões é a questão dos monorepos. Alguns locais os adotaram para toda a organização, enquanto outros aplicaram o conceito em certos aplicativos restritos, como aplicativos móveis ou de desenvolvimento combinado de UI/BFF. Independente de quando ou onde é apropriado usar os monorepos, o setor parece estar revisitando ferramentas que podem gerenciar com eficácia grandes bases de código e prepará-las com eficiência em unidades implantáveis. Turborepo é uma ferramenta relativamente nova nesta categoria, que oferece uma alternativa ao Nx ou ao Lerna para grandes bases de código JavaScript ou TypeScript. Um dos desafios com grandes repositórios é executar compilações com rapidez suficiente para não interromper o fluxo da pessoa desenvolvedora ou reduzir a eficiência. Turborepo é escrito em Rust, o que lhe dá grande desempenho; ele também compila de forma incremental e armazena em cache as etapas intermediárias, para acelerar ainda mais as coisas. No entanto, requer mudanças no fluxo de trabalho da pessoa desenvolvedora que levam tempo para aprender e provavelmente é mais adequado para grandes bases de código com várias compilações independentes, onde uma abordagem diferente é necessária. Descobrimos que a documentação é escassa, levando algumas equipes a, por ora, se aterem a ferramentas mais bem estabelecidas. No entanto, vale a pena avaliar e ver se o Turborepo e seu novo companheiro, o Turbopack (atualmente em versão beta), continuam a evoluir.
