Monorepos a escala: guía práctica de performance con Turborepo

Audiencia: Full-stack / platform teams
Formato: Guía práctica
Contexto: CI/CD más rápido para equipos distribuidos


TL;DR

  • Turborepo permite acelerar builds en monorepos con caching y ejecución incremental
  • Bien configurado, puede reducir tiempos de CI/CD de minutos a segundos
  • La clave está en caching remoto, pipelines claros y tareas bien definidas

¿Qué es Turborepo?

Turborepo es una herramienta de build system para monorepos creada por Vercel.

Permite:

  • Ejecutar tareas en múltiples paquetes de forma inteligente
  • Cachear resultados para evitar trabajo innecesario
  • Compartir resultados entre desarrolladores y CI

:backhand_index_pointing_right: En simple: solo ejecuta lo que cambió


Problema típico en monorepos

Sin optimización:

  • Builds lentos
  • CI costoso
  • Tiempos largos de feedback

Ejemplo:

npm run build

→ reconstruye todo, incluso lo que no cambió


Cómo Turborepo lo resuelve

1. Ejecución incremental

Solo corre tareas en paquetes afectados:

turbo run build

2. Caching automático

Si nada cambió:

✔ build (cache hit)

3. Caching remoto (clave para equipos)

Permite compartir resultados entre:

  • desarrolladores
  • CI
  • distintos entornos

Setup mínimo

1. Instalar

npm install turbo --save-dev

2. Configurar

turbo.json

{
  "$schema": "https://turbo.build/schema.json",
  "pipeline": {
    "build": {
      "dependsOn": ["^build"],
      "outputs": ["dist/**"]
    },
    "dev": {
      "cache": false
    }
  }
}

3. Ejecutar

turbo run build

Optimización real (lo que marca la diferencia)

:white_check_mark: Define outputs correctamente

"outputs": ["dist/**"]

Si no haces esto:

:backhand_index_pointing_right: no hay cache efectivo


:white_check_mark: Evita tareas innecesarias

Divide bien:

  • build
  • lint
  • test

:white_check_mark: Usa caching remoto

Con Vercel o self-hosted:

npx turbo login
npx turbo link

:white_check_mark: Paralelismo

Turborepo ejecuta tareas en paralelo automáticamente

Pero asegúrate de que:

  • no haya dependencias innecesarias

Ejemplo real de impacto

Antes:

  • CI: 12 minutos

Después:

  • CI: 2–3 minutos
  • Builds locales: casi instantáneos

Errores comunes

  • No definir outputs → cache inútil
  • Tasks demasiado acopladas
  • Ignorar caching remoto
  • Ejecutar todo en CI siempre

Cuándo usar Turborepo

Ideal para:

  • monorepos JS/TS
  • múltiples apps (frontend + backend)
  • equipos distribuidos

Cuándo NO

  • repos pequeños
  • un solo paquete

Veredicto

Turborepo no es solo una herramienta de performance.

Es una forma de pensar el build system:

:backhand_index_pointing_right: ejecutar menos, reutilizar más


Reflexión final

El problema no es el monorepo.

Es ejecutar trabajo innecesario.

Optimizar eso cambia completamente la velocidad de tu equipo.