Skip to content

Konfigurasi

Repomix dapat dikonfigurasi menggunakan file konfigurasi (repomix.config.json) atau opsi baris perintah. File konfigurasi memungkinkan Anda untuk menyesuaikan berbagai aspek cara pemrosesan dan output codebase Anda.

Memulai Cepat

Buat file konfigurasi di direktori proyek Anda:

bash
repomix --init

Ini akan membuat file repomix.config.json dengan pengaturan default. Anda juga dapat membuat file konfigurasi global yang akan digunakan sebagai fallback ketika tidak ada konfigurasi lokal yang ditemukan:

bash
repomix --init --global

Opsi Konfigurasi

OpsiDeskripsiDefault
input.maxFileSizeUkuran file maksimum dalam byte untuk diproses. File yang lebih besar akan dilewati. Berguna untuk mengecualikan file biner besar atau file data50000000
output.filePathNama file output. Mendukung format XML, Markdown, dan teks biasa"repomix-output.xml"
output.styleGaya output (xml, markdown, plain). Setiap format memiliki keunggulan tersendiri untuk berbagai alat AI"xml"
output.parsableStyleApakah akan escape output berdasarkan skema gaya yang dipilih. Memungkinkan parsing yang lebih baik tetapi dapat meningkatkan jumlah tokenfalse
output.compressApakah akan melakukan ekstraksi kode cerdas menggunakan Tree-sitter untuk mengurangi jumlah token sambil mempertahankan strukturfalse
output.headerTextTeks kustom untuk disertakan dalam header file. Berguna untuk memberikan konteks atau instruksi untuk alat AInull
output.instructionFilePathPath ke file yang berisi instruksi kustom rinci untuk pemrosesan AInull
output.fileSummaryApakah akan menyertakan bagian ringkasan di awal yang menampilkan jumlah file, ukuran, dan metrik lainnyatrue
output.directoryStructureApakah akan menyertakan struktur direktori dalam output. Membantu AI memahami organisasi proyektrue
output.filesApakah akan menyertakan konten file dalam output. Setel ke false untuk hanya menyertakan struktur dan metadatatrue
output.removeCommentsApakah akan menghapus komentar dari jenis file yang didukung. Dapat mengurangi noise dan jumlah tokenfalse
output.removeEmptyLinesApakah akan menghapus baris kosong dari output untuk mengurangi jumlah tokenfalse
output.showLineNumbersApakah akan menambahkan nomor baris ke setiap baris. Berguna untuk mereferensikan bagian kode tertentufalse
output.truncateBase64Apakah akan memotong string data base64 yang panjang (misalnya, gambar) untuk mengurangi jumlah tokenfalse
output.copyToClipboardApakah akan menyalin output ke clipboard sistem selain menyimpan filefalse
output.topFilesLengthJumlah file teratas untuk ditampilkan dalam ringkasan. Jika diset ke 0, tidak akan ada ringkasan yang ditampilkan5
output.includeEmptyDirectoriesApakah akan menyertakan direktori kosong dalam struktur repositoryfalse
output.git.sortByChangesApakah akan mengurutkan file berdasarkan jumlah perubahan git. File dengan lebih banyak perubahan muncul di bagian bawahtrue
output.git.sortByChangesMaxCommitsJumlah maksimum commit untuk dianalisis saat menghitung perubahan git. Membatasi kedalaman riwayat untuk performa100
output.git.includeDiffsApakah akan menyertakan perbedaan git dalam output. Menampilkan perubahan work tree dan staged secara terpisahfalse
includePola file untuk disertakan menggunakan pola glob[]
ignore.useGitignoreApakah akan menggunakan pola dari file .gitignore proyektrue
ignore.useDefaultPatternsApakah akan menggunakan pola ignore default (node_modules, .git, dll.)true
ignore.customPatternsPola tambahan untuk diabaikan menggunakan pola glob[]
security.enableSecurityCheckApakah akan melakukan pemeriksaan keamanan menggunakan Secretlint untuk mendeteksi informasi sensitiftrue
tokenCount.encodingEncoding penghitungan token yang digunakan oleh tokenizer tiktoken OpenAI. Gunakan o200k_base untuk GPT-4o, cl100k_base untuk GPT-4/3.5. Lihat tiktoken model.py untuk detail"o200k_base"

File konfigurasi mendukung sintaks JSON5, yang memungkinkan:

  • Komentar (baik single-line maupun multi-line)
  • Trailing comma dalam objek dan array
  • Nama properti tanpa tanda kutip
  • Sintaks string yang lebih fleksibel

Validasi Skema

Anda dapat mengaktifkan validasi skema untuk file konfigurasi Anda dengan menambahkan properti $schema:

json
{
  "$schema": "https://repomix.com/schemas/latest/schema.json",
  "output": {
    "filePath": "repomix-output.md",
    "style": "markdown"
  }
}

Ini menyediakan auto-completion dan validasi di editor yang mendukung skema JSON.

Contoh File Konfigurasi

Berikut adalah contoh file konfigurasi lengkap (repomix.config.json):

json
{
  "$schema": "https://repomix.com/schemas/latest/schema.json",
  "input": {
    "maxFileSize": 50000000
  },
  "output": {
    "filePath": "repomix-output.xml",
    "style": "xml",
    "parsableStyle": false,
    "compress": false,
    "headerText": "Informasi header kustom untuk file yang dikemas.",
    "fileSummary": true,
    "directoryStructure": true,
    "files": true,
    "removeComments": false,
    "removeEmptyLines": false,
    "topFilesLength": 5,
    "showLineNumbers": false,
    "truncateBase64": false,
    "copyToClipboard": false,
    "includeEmptyDirectories": false,
    "git": {
      "sortByChanges": true,
      "sortByChangesMaxCommits": 100,
      "includeDiffs": false
    }
  },
  "include": ["**/*"],
  "ignore": {
    "useGitignore": true,
    "useDefaultPatterns": true,
    // Pola juga dapat ditentukan di .repomixignore
    "customPatterns": [
      "additional-folder",
      "**/*.log"
    ],
  },
  "security": {
    "enableSecurityCheck": true
  },
  "tokenCount": {
    "encoding": "o200k_base"
  }
}

Lokasi File Konfigurasi

Repomix mencari file konfigurasi dalam urutan berikut:

  1. File konfigurasi lokal (repomix.config.json) di direktori saat ini
  2. File konfigurasi global:
    • Windows: %LOCALAPPDATA%\Repomix\repomix.config.json
    • macOS/Linux: ~/.config/repomix/repomix.config.json

Opsi baris perintah memiliki prioritas lebih tinggi daripada pengaturan file konfigurasi.

Pola Ignore

Repomix menyediakan beberapa cara untuk menentukan file mana yang harus diabaikan. Pola diproses dalam urutan prioritas berikut:

  1. Opsi CLI (--ignore)
  2. File .repomixignore di direktori proyek
  3. .gitignore dan .git/info/exclude (jika ignore.useGitignore adalah true)
  4. Pola default (jika ignore.useDefaultPatterns adalah true)

Contoh .repomixignore:

text
# Direktori cache
.cache/
tmp/

# Output build
dist/
build/

# Log
*.log

Pola Ignore Default

Ketika ignore.useDefaultPatterns adalah true, Repomix secara otomatis mengabaikan pola umum:

text
node_modules/**
.git/**
coverage/**
dist/**

Untuk daftar lengkap, lihat defaultIgnore.ts

Fitur Lanjutan

Kompresi Kode

Fitur kompresi kode, diaktifkan dengan output.compress: true, menggunakan Tree-sitter untuk secara cerdas mengekstrak struktur kode penting sambil menghapus detail implementasi. Ini membantu mengurangi jumlah token sambil mempertahankan informasi struktural penting.

Manfaat utama:

  • Mengurangi jumlah token secara signifikan
  • Mempertahankan signature kelas dan fungsi
  • Memelihara import dan export
  • Menjaga definisi tipe dan interface
  • Menghapus body fungsi dan detail implementasi

Untuk detail dan contoh lebih lanjut, lihat Panduan Kompresi Kode.

Integrasi Git

Konfigurasi output.git menyediakan fitur Git-aware yang kuat:

  • sortByChanges: Ketika true, file diurutkan berdasarkan jumlah perubahan Git (commit yang memodifikasi file). File dengan lebih banyak perubahan muncul di bagian bawah output. Ini membantu memprioritaskan file yang lebih aktif dikembangkan. Default: true
  • sortByChangesMaxCommits: Jumlah maksimum commit untuk dianalisis saat menghitung perubahan file. Default: 100
  • includeDiffs: Ketika true, menyertakan perbedaan Git dalam output (termasuk perubahan work tree dan staged secara terpisah). Ini memungkinkan pembaca melihat perubahan yang tertunda di repository. Default: false

Contoh konfigurasi:

json
{
  "output": {
    "git": {
      "sortByChanges": true,
      "sortByChangesMaxCommits": 100,
      "includeDiffs": true
    }
  }
}

Pemeriksaan Keamanan

Ketika security.enableSecurityCheck diaktifkan, Repomix menggunakan Secretlint untuk mendeteksi informasi sensitif dalam codebase Anda sebelum memasukkannya dalam output. Ini membantu mencegah paparan yang tidak disengaja dari:

  • Kunci API
  • Token akses
  • Kunci pribadi
  • Password
  • Kredensial sensitif lainnya

Penghapusan Komentar

Ketika output.removeComments diset ke true, komentar dihapus dari jenis file yang didukung untuk mengurangi ukuran output dan fokus pada konten kode penting. Ini dapat sangat berguna ketika:

  • Bekerja dengan kode yang banyak didokumentasikan
  • Mencoba mengurangi jumlah token
  • Fokus pada struktur dan logika kode

Untuk bahasa yang didukung dan contoh detail, lihat Panduan Penghapusan Komentar.

Released under the MIT License.