📦 Configuración de un Monorepo
En esta clase vamos a ver cómo configurar un monorepo desde cero, entendiendo las decisiones clave que debes tomar para organizar múltiples proyectos dentro de un mismo repositorio.
Un monorepo no es solo juntar carpetas. Es una forma de pensar la arquitectura de tus proyectos.
🧠 ¿Qué es un Monorepo?
Un monorepo es un único repositorio que contiene múltiples proyectos relacionados.
Por ejemplo:
- Frontend (web)
- Backend (API)
- Librerías compartidas
- Configuración común
Todo vive en el mismo repo.
🤔 ¿Por qué usar un Monorepo?
Ventajas principales:
- 🔁 Reutilización de código (shared packages)
- ⚡ Desarrollo más rápido entre proyectos relacionados
- 🔍 Visibilidad total del sistema
- 🧪 Testing y cambios coordinados
- 📦 Gestión centralizada de dependencias
Pero también tiene retos si no se estructura bien.
🏗️ Estructura básica
Una estructura típica podría ser:
/apps
/web
/api
/packages
/ui
/utils
- apps → aplicaciones finales
- packages → código reutilizable
Esto separa claramente lo que se ejecuta de lo que se comparte.
⚙️ Primeros pasos de configuración
1. Crear el repositorio
Empieza con un proyecto vacío:
mkdir mi-monorepo
cd mi-monorepo
npm init -y
2. Activar workspaces
En package.json:
{
"private": true,
"workspaces": [
"apps/*",
"packages/*"
]
}
Esto permite gestionar múltiples proyectos desde un único root.
3. Crear las carpetas
mkdir apps packages
mkdir apps/web apps/api
mkdir packages/ui packages/utils
Cada carpeta tendrá su propio package.json.
🔗 Cómo se conectan los paquetes
Uno de los puntos clave del monorepo es que puedes usar paquetes internos como dependencias:
{
"dependencies": {
"ui": "*"
}
}
Esto permite:
- Compartir componentes
- Reutilizar lógica
- Evitar duplicación
🧪 ¿Cuándo tiene sentido un monorepo?
No siempre necesitas uno.
Tiene sentido cuando:
- Tienes varios proyectos relacionados
- Compartes código entre ellos
- Necesitas coordinación frecuente
- Estás construyendo un ecosistema (no solo una app)
No tiene sentido si:
- Solo tienes un proyecto pequeño
- No hay reutilización
- Complica más de lo que ayuda
⚠️ Problemas comunes
Al empezar con monorepos, es fácil caer en errores:
- ❌ Mala separación entre apps y packages
- ❌ Dependencias cruzadas caóticas
- ❌ Build lento si no se optimiza
- ❌ Falta de tooling adecuado
Por eso, la configuración inicial es clave.
🛠️ Herramientas que suelen usarse
Aunque aquí vemos la base, en proyectos reales se suele usar:
- Turborepo
- Nx
- pnpm workspaces
- Yarn workspaces
Estas herramientas ayudan con:
- Caché de builds
- Ejecución paralela
- Gestión eficiente de dependencias
🧩 Idea clave
Un monorepo no es solo una estructura de carpetas.
Es una forma de:
- Organizar sistemas complejos
- Escalar proyectos
- Compartir conocimiento y código
🔜 Qué veremos en la siguiente clase
En la siguiente clase profundizaremos en:
- Herramientas avanzadas para monorepos
- Optimización de builds
- Cómo compartir código correctamente
- Estrategias de versionado
- Automatización y CI
Aquí es donde el monorepo pasa de ser útil… a ser una máquina de productividad.
💡 Consejo: Empieza simple. No necesitas Turborepo ni Nx el día 1. Entiende primero cómo funciona un monorepo básico y luego escala.