# Kompresi Kode


Kompresi kode adalah fitur yang kuat yang secara cerdas mengekstrak struktur kode esensial sambil menghapus detail implementasi. Ini sangat berguna untuk mengurangi jumlah token sambil mempertahankan informasi struktural penting tentang basis kode Anda.

> [!NOTE]  
> Ini adalah fitur eksperimental yang akan kami tingkatkan secara aktif berdasarkan umpan balik pengguna dan penggunaan dunia nyata

## Penggunaan Dasar

Aktifkan kompresi kode menggunakan flag `--compress`:

```bash
repomix --compress
```

Anda juga dapat menggunakannya dengan repositori jarak jauh:

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

## Cara Kerjanya

Algoritma kompresi memproses kode menggunakan parsing tree-sitter untuk mengekstrak dan mempertahankan elemen struktural esensial sambil menghapus detail implementasi.

Kompresi mempertahankan:
- Tanda tangan fungsi dan metode
- Definisi antarmuka dan tipe
- Struktur dan properti kelas
- Elemen struktural penting

Sambil menghapus:
- Implementasi fungsi dan metode
- Detail logika perulangan dan kondisional
- Deklarasi variabel internal
- Kode spesifik implementasi

### Contoh

Kode TypeScript asli:

```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;
}
```

Setelah kompresi:

```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;
}
```

## Konfigurasi

Anda dapat mengaktifkan kompresi dalam file konfigurasi Anda:

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

## Kasus Penggunaan

Kompresi kode sangat berguna ketika:
- Menganalisis struktur dan arsitektur kode
- Mengurangi jumlah token untuk pemrosesan LLM
- Membuat dokumentasi tingkat tinggi
- Memahami pola dan tanda tangan kode
- Berbagi desain API dan antarmuka

## Opsi Terkait

Anda dapat menggabungkan kompresi dengan opsi lain:
- `--remove-comments`: Menghapus komentar kode
- `--remove-empty-lines`: Menghapus baris kosong
- `--output-show-line-numbers`: Menambahkan nomor baris ke output
