Monorepo
Un monorepo es un único repositorio que contiene varios proyectos, como aplicaciones y librerías compartidas, normalmente con herramientas que entienden cómo dependen entre sí.
En un monorepo, las aplicaciones y las librerías que comparten viven en un repositorio con una sola historia. Un cambio que toca una librería y a sus consumidores es un solo commit y un solo pull request. No hay versiones internas de paquetes que publicar y actualizar, porque cada proyecto usa el estado actual de los demás.
Herramientas como Nx o Turborepo hacen que esto funcione a escala. Construyen un grafo de los proyectos, corren las tareas solo en los proyectos afectados por un cambio y guardan los resultados en caché.
Ejemplo
Una empresa mantiene un shell, dos remotos y sus librerías compartidas en un repositorio:
apps/shell
apps/orders
apps/invoices
libs/ui
libs/auth
Un desarrollador renombra un input del botón en libs/ui. El compilador muestra de inmediato cada uso en cada aplicación, y el mismo pull request los corrige. CI compila y prueba solo los proyectos que dependen de libs/ui.
Confusión frecuente
Monorepo y monolito se confunden con frecuencia. El repositorio es donde se guarda el código. No dice nada sobre cómo se despliega. Las aplicaciones de un monorepo se pueden compilar, versionar y desplegar de forma independiente, y muchos microfrontends se desarrollan así.
La suposición contraria también es incorrecta. Poner el código en un repositorio no crea buenos límites. Sin reglas, cualquier proyecto puede importar de cualquier otro, y el resultado es un enredo. Aplica reglas de dependencias con lint, define dueños de código por carpeta y mantén la rama principal siempre lista para publicar.
Las herramientas son parte de la decisión. Sin builds limitados a lo afectado y sin caché, el tiempo de CI crece con el tamaño del repositorio. En microfrontends se muestra cómo se puede organizar una plataforma.
Por qué importa. Durante una migración, un monorepo permite que el código legacy y el nuevo compartan librerías y se cambien en un mismo pull request. En una plataforma, hace visibles y exigibles las versiones compartidas y los contratos.
Términos relacionados
¿Planeas una migración o una plataforma de microfrontends?
En una llamada de 20 minutos me cuentas tu situación y te digo cómo la abordaría. Si todavía no vale la pena, también te lo digo.
Escríbeme por LinkedIn