Monorepos em escala: guia prático de performance com Turborepo

Audiência: Full-stack / platform teams
Formato: Guia prática
Contexto: CI/CD mais rápido para equipes distribuídas


TL;DR

  • Turborepo permite acelerar builds em monorepos com caching e execução incremental
  • Bem configurado, pode reduzir tempos de CI/CD de minutos a segundos
  • A chave está em caching remoto, pipelines claros e tarefas bem definidas

O que é Turborepo?

Turborepo é uma ferramenta de build system para monorepos criada pela Vercel.

Permite:

  • Executar tarefas em múltiplos pacotes de forma inteligente
  • Cachear resultados para evitar trabalho desnecessário
  • Compartilhar resultados entre desenvolvedores e CI

:backhand_index_pointing_right: Em resumo: execute apenas o que mudou


Problema típico em monorepos

Sem otimização:

  • Builds lentos
  • CI custoso
  • Tempos longos de feedback

Exemplo:

npm run build

→ reconstrói tudo, mesmo o que não mudou


Como Turborepo resolve

1. Execução incremental

Executa apenas tarefas em pacotes afetados:

turbo run build

2. Caching automático

Se nada mudou:

✔ build (cache hit)

3. Caching remoto (chave para equipes)

Permite compartilhar resultados entre:

  • desenvolvedores
  • CI
  • diferentes ambientes

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. Executar

turbo run build

Otimização real (o que faz a diferença)

:white_check_mark: Define outputs corretamente

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

Se você não fizer isso:

:backhand_index_pointing_right: não há cache efetivo


:white_check_mark: Evita tarefas desnecessárias

Divida bem:

  • build
  • lint
  • test

:white_check_mark: Use caching remoto

Com Vercel ou self-hosted:

npx turbo login
npx turbo link

:white_check_mark: Paralelismo

Turborepo executa tarefas em paralelo automaticamente

Mas certifique-se de que:

  • não haja dependências desnecessárias

Exemplo real de impacto

Antes:

  • CI: 12 minutos

Depois:

  • CI: 2–3 minutos
  • Builds locais: quase instantâneos

Erros comuns

  • Não definir outputs → cache inútil
  • Tasks muito acopladas
  • Ignorar caching remoto
  • Executar tudo em CI sempre

Quando usar Turborepo

Ideal para:

  • monorepos JS/TS
  • múltiplas apps (frontend + backend)
  • equipes distribuídas

Quando NÃO

  • repositórios pequenos
  • um único pacote

Veredicto

Turborepo não é apenas uma ferramenta de performance.

É uma forma de pensar o build system:

:backhand_index_pointing_right: execute menos, reutilize mais


Reflexão final

O problema não é o monorepo.

É executar trabalho desnecessário.

Otimizar isso muda completamente a velocidade da sua equipe.