Turborepo ayuda a gestionar grandes mono repositorios de JavaScript o TypeScript mediante el análisis, almacenamiento en caché, paralelización y optimización de las tareas de construcción para acelerar el proceso. En mono repositorios grandes, los proyectos suelen depender unos de otros; reconstruir todas las dependencias por cada cambio es ineficiente y consume mucho tiempo, pero Turborepo facilita este proceso. A diferencia de Nx, la configuración predeterminada de Turborepo utiliza múltiples archivos package.json; uno por proyecto, lo que permite tener dependencias con diferentes versiones (múltiples versiones de React, por ejemplo) en un único mono repositorio, algo que Nx desaconseja. Aunque esto podría considerarse un anti-patrón, resuelve ciertos casos de uso, como la migración de múltiples repositorios a uno único, donde los equipos pueden necesitar temporalmente varias versiones de dependencias. En nuestra experiencia, Turborepo es bastante sencillo de configurar y tiene un buen desempeño.
Uno de los temas que constantemente capta nuestra atención en nuestras conversaciones es el de los monorepos. En algunas compañías los han adoptado para toda la organización, mientras que en otras han aplicado el concepto en determinadas aplicaciones concretas como aplicaciones móviles o desarrollos que combinan IU/BFF. Independientemente de si los monorepos son apropiados o cuándo, la industria parece estar reconsiderando herramientas que puedan gestionar de manera efectiva grandes bases de código y construirlas de manera eficiente como unidades desplegables. Turborepo es una herramienta relativamente nueva en esta categoría que ofrece una alternativa a Nx o Lerna para grandes bases de código en JavaScript o TypeScript. Uno de los retos con el manejo de los repositorios grandes es poder ejecutar su construcción de manera suficientemente rápida para no interrumpir el flujo del desarrollador o reducir su eficiencia. Turborepo está escrito en Rust lo que le proporciona un alto rendimiento; también realiza la construcción de manera incremental y cachea los pasos intermedios para lograr aun más velocidad. Sin embargo, obliga a cambios en el flujo del desarrollador que llevan tiempo aprender y probablemente es más adecuado para grandes bases de código en las que existen múltiples procesos de construcción independientes donde se pueda garantizar un enfoque diferente. Hemos encontrado que la documentación es escasa, lo que ha llevado a algunos equipos a seguir utilizando de momento herramientas más establecidas. Sin embargo, merece la pena evaluar si Turborepo y su más nuevo acompañante, Turbopack (actualmente en beta), continúan evolucionando.
