# Compressão de Código

A compressão de código é um recurso poderoso que extrai estruturas essenciais do código de forma inteligente enquanto remove detalhes de implementação. Isso é particularmente útil para reduzir a contagem de tokens enquanto mantém informações estruturais importantes sobre sua base de código.

> [!NOTE]
> Este é um recurso experimental que estaremos melhorando ativamente com base no feedback dos usuários e no uso no mundo real.

## Uso Básico

Ative a compressão de código usando a flag `--compress`:

```bash
repomix --compress
```

Você também pode usá-la com repositórios remotos:

```bash
repomix --remote user/repo --compress
```

## Como Funciona

O algoritmo de compressão processa o código usando análise Tree-sitter para extrair e preservar elementos estruturais essenciais enquanto remove detalhes de implementação.

A compressão preserva:
- Assinaturas de funções e métodos
- Definições de interfaces e tipos
- Estruturas de classes e propriedades
- Elementos estruturais importantes

Enquanto remove:
- Implementações de funções e métodos
- Detalhes de lógica de loops e condicionais
- Declarações de variáveis internas
- Código específico de implementação

### Exemplo

Código TypeScript original:

```typescript
import { ShoppingItem } from './shopping-item';

/**
 * Calculate the total price of shopping items
 */
const calculateTotal = (
  items: ShoppingItem[]
) => {
  let total = 0;
  for (const item of items) {
    total += item.price * item.quantity;
  }
  return total;
}

// Shopping item interface
interface Item {
  name: string;
  price: number;
  quantity: number;
}
```

Após a compressão:

```typescript
import { ShoppingItem } from './shopping-item';
⋮----
/**
 * Calculate the total price of shopping items
 */
const calculateTotal = (
  items: ShoppingItem[]
) => {
⋮----
// Shopping item interface
interface Item {
  name: string;
  price: number;
  quantity: number;
}
```

## Configuração

Você pode ativar a compressão em seu arquivo de configuração:

```json
{
  "output": {
    "compress": true
  }
}
```

## Casos de Uso

A compressão de código é particularmente útil quando:
- Analisando estrutura e arquitetura do código
- Reduzindo contagem de tokens para processamento LLM
- Criando documentação de alto nível
- Compreendendo padrões e assinaturas de código
- Compartilhando designs de API e interface

## Opções Relacionadas

Você pode combinar a compressão com outras opções:
- `--remove-comments`: Remover comentários do código
- `--remove-empty-lines`: Remover linhas vazias
- `--output-show-line-numbers`: Adicionar números de linha à saída