Yapılandırma
Repomix, bir yapılandırma dosyası veya komut satırı seçenekleri kullanılarak yapılandırılabilir. Yapılandırma dosyası, Repomix'in kod tabanınızı işleme ve çıktı alma biçiminin çeşitli yönlerini özelleştirmenize olanak tanır.
Yapılandırma Dosyası Formatları
Repomix, esneklik ve kullanım kolaylığı için birden fazla yapılandırma dosyası formatını destekler.
Repomix, yapılandırma dosyalarını otomatik olarak aşağıdaki öncelik sırasına göre arar:
- TypeScript (
repomix.config.ts,repomix.config.mts,repomix.config.cts) - JavaScript/ES Modülü (
repomix.config.js,repomix.config.mjs,repomix.config.cjs) - JSON (
repomix.config.json5,repomix.config.jsonc,repomix.config.json)
JSON Yapılandırması
Proje dizininizde bir yapılandırma dosyası oluşturun:
repomix --initBu komut, varsayılan ayarlarla bir repomix.config.json dosyası oluşturur. Yerel yapılandırma bulunamadığında yedek olarak kullanılacak global bir yapılandırma dosyası da oluşturabilirsiniz:
repomix --init --globalTypeScript Yapılandırması
TypeScript yapılandırma dosyaları, tam tür denetimi ve IDE desteğiyle en iyi geliştirici deneyimini sunar.
Kurulum:
TypeScript veya JavaScript yapılandırmasını defineConfig ile kullanmak için Repomix'i geliştirme bağımlılığı olarak yüklemeniz gerekir:
npm install -D repomixÖrnek:
// repomix.config.ts
import { defineConfig } from 'repomix';
export default defineConfig({
output: {
filePath: 'output.xml',
style: 'xml',
removeComments: true,
},
ignore: {
customPatterns: ['**/node_modules/**', '**/dist/**'],
},
});Avantajlar:
- IDE'nizde tam TypeScript tür denetimi
- Mükemmel IDE otomatik tamamlama ve IntelliSense
- Dinamik değerler kullanabilme (zaman damgaları, ortam değişkenleri vb.)
Dinamik Değer Örneği:
// repomix.config.ts
import { defineConfig } from 'repomix';
// Generate timestamp-based filename
const timestamp = new Date().toISOString().slice(0, 19).replace(/[:.]/g, '-');
export default defineConfig({
output: {
filePath: `output-${timestamp}.xml`,
style: 'xml',
},
});JavaScript Yapılandırması
JavaScript yapılandırma dosyaları, defineConfig ve dinamik değerleri destekleyerek TypeScript ile aynı şekilde çalışır.
Yapılandırma Seçenekleri
| Seçenek | Açıklama | Varsayılan |
|---|---|---|
input.maxFileSize | İşlenecek maksimum dosya boyutu (bayt). Bu boyutu aşan dosyalar atlanır. Büyük ikili dosyaları veya veri dosyalarını hariç tutmak için kullanışlıdır | 50000000 |
output.filePath | Çıktı dosyasının adı. XML, Markdown ve düz metin formatlarını destekler | "repomix-output.xml" |
output.style | Çıktının stili (xml, markdown, json, plain). Her formatın farklı AI araçları için kendine özgü avantajları vardır | "xml" |
output.parsableStyle | Çıktının seçilen stil şemasına göre kaçış karakteriyle işlenip işlenmeyeceği. Daha iyi ayrıştırma sağlar ancak token sayısını artırabilir | false |
output.compress | Token sayısını azaltırken yapıyı korumak amacıyla Tree-sitter kullanarak akıllı kod çıkarma yapılıp yapılmayacağı | false |
output.headerText | Dosya başlığına dahil edilecek özel metin. AI araçları için bağlam veya talimat sağlamak için kullanışlıdır | null |
output.instructionFilePath | AI işleme için ayrıntılı özel talimatlar içeren dosyanın yolu | null |
output.fileSummary | Başlangıçta dosya sayıları, boyutları ve diğer metrikleri gösteren özet bölümünün dahil edilip edilmeyeceği | true |
output.directoryStructure | Çıktıya dizin yapısının dahil edilip edilmeyeceği. AI'ın proje organizasyonunu anlamasına yardımcı olur | true |
output.files | Çıktıya dosya içeriklerinin dahil edilip edilmeyeceği. Yalnızca yapı ve meta veri dahil etmek için false olarak ayarlayın | true |
output.removeComments | Desteklenen dosya türlerinden yorumların kaldırılıp kaldırılmayacağı. Gürültüyü ve token sayısını azaltabilir | false |
output.removeEmptyLines | Token sayısını azaltmak için çıktıdan boş satırların kaldırılıp kaldırılmayacağı | false |
output.showLineNumbers | Her satıra satır numarası eklenip eklenmeyeceği. Kodun belirli bölümlerine atıfta bulunmak için kullanışlıdır | false |
output.truncateBase64 | Token sayısını azaltmak için uzun base64 veri dizelerinin (örn. görseller) kırpılıp kırpılmayacağı | false |
output.copyToClipboard | Dosyayı kaydetmeye ek olarak çıktının sistem panosuna kopyalanıp kopyalanmayacağı | false |
output.splitOutput | Çıktıyı parça başına maksimum boyuta göre numaralı birden fazla dosyaya böl (örn. yaklaşık 1MB için 1000000). CLI, 500kb veya 2mb gibi insan tarafından okunabilir boyutları kabul eder. Her dosyayı sınırın altında tutar ve dosyaların parçalar arasında bölünmesini önler | Ayarlanmamış |
output.topFilesLength | Özette gösterilecek en iyi dosya sayısı. 0 olarak ayarlanırsa özet gösterilmez | 5 |
output.includeEmptyDirectories | Depo yapısına boş dizinlerin dahil edilip edilmeyeceği | false |
output.includeFullDirectoryStructure | include kalıpları kullanılırken yalnızca dahil edilen dosyaları işlerken tam dizin ağacının (yoksayma kalıplarına uyarak) görüntülenip görüntülenmeyeceği. AI analizi için tam depo bağlamı sağlar | false |
output.git.sortByChanges | Dosyaların git değişiklik sayısına göre sıralanıp sıralanmayacağı. Daha fazla değişikliğe sahip dosyalar altta görünür | true |
output.git.sortByChangesMaxCommits | Git değişiklikleri için analiz edilecek maksimum commit sayısı. Performans için geçmiş derinliğini sınırlar | 100 |
output.git.includeDiffs | Git farklarının çıktıya dahil edilip edilmeyeceği. Hem çalışma ağacını hem de aşamalı değişiklikleri ayrı ayrı gösterir | false |
output.git.includeLogs | Git günlüklerinin çıktıya dahil edilip edilmeyeceği. Tarihler, mesajlar ve dosya yollarıyla commit geçmişini gösterir | false |
output.git.includeLogsCount | Çıktıya dahil edilecek git günlüğü commit sayısı | 50 |
include | Glob kalıpları kullanılarak dahil edilecek dosya kalıpları | [] |
ignore.useGitignore | Projenin .gitignore dosyasındaki kalıpların kullanılıp kullanılmayacağı | true |
ignore.useDotIgnore | Projenin .ignore dosyasındaki kalıpların kullanılıp kullanılmayacağı | true |
ignore.useDefaultPatterns | Varsayılan yoksayma kalıplarının kullanılıp kullanılmayacağı (node_modules, .git vb.) | true |
ignore.customPatterns | Glob kalıpları kullanılarak yoksayılacak ek kalıplar | [] |
security.enableSecurityCheck | Hassas bilgileri tespit etmek için Secretlint kullanılarak güvenlik kontrollerinin yapılıp yapılmayacağı | true |
tokenCount.encoding | OpenAI'ın tiktoken tokenleştiricisi tarafından kullanılan token sayımı kodlaması. GPT-4o için o200k_base, GPT-4/3.5 için cl100k_base kullanın. Ayrıntılar için tiktoken model.py sayfasına bakın. | "o200k_base" |
Yapılandırma dosyası JSON5 sözdizimini destekler; bu şunlara olanak tanır:
- Yorumlar (hem tek satırlı hem de çok satırlı)
- Nesnelerde ve dizilerde sondaki virgüller
- Tırnaksız özellik adları
- Daha esnek dize sözdizimi
Şema Doğrulaması
$schema özelliğini ekleyerek yapılandırma dosyanız için şema doğrulamasını etkinleştirebilirsiniz:
{
"$schema": "https://repomix.com/schemas/latest/schema.json",
"output": {
"filePath": "repomix-output.xml",
"style": "xml"
}
}Bu, JSON şemasını destekleyen editörlerde otomatik tamamlama ve doğrulama sağlar.
Örnek Yapılandırma Dosyası
Eksiksiz bir yapılandırma dosyası örneği (repomix.config.json):
{
"$schema": "https://repomix.com/schemas/latest/schema.json",
"input": {
"maxFileSize": 50000000
},
"output": {
"filePath": "repomix-output.xml",
"style": "xml",
"parsableStyle": false,
"compress": false,
"headerText": "Custom header information for the packed file.",
"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,
"includeLogs": false,
"includeLogsCount": 50
}
},
"include": ["**/*"],
"ignore": {
"useGitignore": true,
"useDefaultPatterns": true,
// Patterns can also be specified in .repomixignore
"customPatterns": [
"additional-folder",
"**/*.log"
],
},
"security": {
"enableSecurityCheck": true
},
"tokenCount": {
"encoding": "o200k_base"
}
}Yapılandırma Dosyası Konumları
Repomix, yapılandırma dosyalarını aşağıdaki sırayla arar:
- Geçerli dizindeki yerel yapılandırma dosyası (öncelik sırası: TS > JS > JSON)
- TypeScript:
repomix.config.ts,repomix.config.mts,repomix.config.cts - JavaScript:
repomix.config.js,repomix.config.mjs,repomix.config.cjs - JSON:
repomix.config.json5,repomix.config.jsonc,repomix.config.json
- TypeScript:
- Global yapılandırma dosyası (öncelik sırası: TS > JS > JSON)
- Windows:
- TypeScript:
%LOCALAPPDATA%\Repomix\repomix.config.ts,.mts,.cts - JavaScript:
%LOCALAPPDATA%\Repomix\repomix.config.js,.mjs,.cjs - JSON:
%LOCALAPPDATA%\Repomix\repomix.config.json5,.jsonc,.json
- TypeScript:
- macOS/Linux:
- TypeScript:
~/.config/repomix/repomix.config.ts,.mts,.cts - JavaScript:
~/.config/repomix/repomix.config.js,.mjs,.cjs - JSON:
~/.config/repomix/repomix.config.json5,.jsonc,.json
- TypeScript:
- Windows:
Komut satırı seçenekleri, yapılandırma dosyası ayarlarından önce gelir.
Dahil Etme Kalıpları
Repomix, glob kalıpları kullanılarak dahil edilecek dosyaların belirtilmesini destekler. Bu, daha esnek ve güçlü dosya seçimi sağlar:
- Herhangi bir dizindeki tüm JavaScript dosyalarını dahil etmek için
**/*.jskullanın srcdizini ve alt dizinlerindeki tüm dosyaları dahil etmek içinsrc/**/*kullanınsrc'deki JavaScript dosyalarını ve tüm Markdown dosyalarını dahil etmek için["src/**/*.js", "**/*.md"]gibi birden fazla kalıbı birleştirin
Yapılandırma dosyanızda dahil etme kalıplarını belirtebilirsiniz:
{
"include": ["src/**/*", "tests/**/*.test.js"]
}Ya da tek seferlik filtreleme için --include komut satırı seçeneğini kullanın.
Yoksayma Kalıpları
Repomix, paketleme işlemi sırasında belirli dosyaları veya dizinleri hariç tutmak için yoksayma kalıpları belirlemeye yönelik birden fazla yöntem sunar:
- .gitignore: Varsayılan olarak, projenizin
.gitignoredosyalarında ve.git/info/excludeiçinde listelenen kalıplar kullanılır. Bu davranışignore.useGitignoreayarı veya--no-gitignoreCLI seçeneğiyle kontrol edilebilir. - .ignore: Proje kökünüzde
.gitignoreile aynı formatta bir.ignoredosyası kullanabilirsiniz. Bu dosya, ripgrep ve silver searcher gibi araçlar tarafından dikkate alınır ve birden fazla yoksayma dosyasını yönetme ihtiyacını azaltır. Bu davranışignore.useDotIgnoreayarı veya--no-dot-ignoreCLI seçeneğiyle kontrol edilebilir. - Varsayılan kalıplar: Repomix, yaygın olarak hariç tutulan dosya ve dizinlerin (örn. node_modules, .git, ikili dosyalar) varsayılan bir listesini içerir. Bu özellik
ignore.useDefaultPatternsayarı veya--no-default-patternsCLI seçeneğiyle kontrol edilebilir. Daha fazla ayrıntı için defaultIgnore.ts dosyasına bakın. - .repomixignore: Repomix'e özgü yoksayma kalıpları tanımlamak için proje kökünüzde
.repomixignoredosyası oluşturabilirsiniz. Bu dosya.gitignoreile aynı formatı izler. - Özel kalıplar: Ek yoksayma kalıpları, yapılandırma dosyasındaki
ignore.customPatternsseçeneği kullanılarak belirtilebilir. Bu ayarın üzerine-i, --ignorekomut satırı seçeneğiyle yazabilirsiniz.
Öncelik Sırası (en yüksekten en düşüğe):
- Özel kalıplar (
ignore.customPatterns) - Yoksayma dosyaları (
.repomixignore,.ignore,.gitignoreve.git/info/exclude):- İç içe dizinlerde, daha derin dizinlerdeki dosyalar daha yüksek önceliğe sahiptir
- Aynı dizinde ise bu dosyalar belirli bir sıra gözetilmeksizin birleştirilir
- Varsayılan kalıplar (
ignore.useDefaultPatternstrue ise ve--no-default-patternskullanılmıyorsa)
Bu yaklaşım, projenizin ihtiyaçlarına göre esnek dosya hariç tutma yapılandırmasına olanak tanır. Güvenlik açısından hassas dosyaların ve büyük ikili dosyaların hariç tutulmasını sağlayarak oluşturulan paket dosyasının boyutunu optimize etmeye ve gizli bilgilerin sızmasını önlemeye yardımcı olur.
Not: İkili dosyalar varsayılan olarak paketlenmiş çıktıya dahil edilmez, ancak yolları çıktı dosyasının "Depo Yapısı" bölümünde listelenir. Bu, paket dosyasını verimli ve metin tabanlı tutarken depo yapısının tam bir görünümünü sağlar. Daha fazla ayrıntı için İkili Dosya İşleme bölümüne bakın.
.repomixignore örneği:
# Cache directories
.cache/
tmp/
# Build outputs
dist/
build/
# Logs
*.logVarsayılan Yoksayma Kalıpları
ignore.useDefaultPatterns true olduğunda, Repomix yaygın kalıpları otomatik olarak yoksayar:
node_modules/**
.git/**
coverage/**
dist/**Tam liste için defaultIgnore.ts dosyasına bakın.
İkili Dosya İşleme
İkili dosyalar (görseller, PDF'ler, derlenmiş ikili dosyalar, arşivler vb.) verimli, metin tabanlı bir çıktı sağlamak amacıyla özel olarak işlenir:
- Dosya İçerikleri: İkili dosyalar, çıktının metin tabanlı ve AI işleme için verimli kalması amacıyla paketlenmiş çıktıya dahil edilmez
- Dizin Yapısı: İkili dosya yolları, deponuzun tam görünümünü sağlamak amacıyla dizin yapısı bölümünde listelenir
Bu yaklaşım, AI tüketimi için optimize edilmiş verimli, metin tabanlı bir çıktıyı korurken depo yapınızın tam görünümünü elde etmenizi sağlar.
Örnek:
Deponuz logo.png ve app.jar içeriyorsa:
- Dizin Yapısı bölümünde görünecekler
- İçerikleri Dosyalar bölümüne dahil edilmeyecek
Dizin Yapısı Çıktısı:
src/
index.ts
utils.ts
assets/
logo.png
build/
app.jarBu sayede AI araçları, ikili içeriklerini işlemeden bu ikili dosyaların proje yapınızda var olduğunu anlayabilir.
Not: input.maxFileSize yapılandırma seçeneğini kullanarak maksimum dosya boyutu eşiğini kontrol edebilirsiniz (varsayılan: 50MB). Bu sınırı aşan dosyalar tamamen atlanır.
Gelişmiş Özellikler
Kod Sıkıştırma
output.compress: true ile etkinleştirilen kod sıkıştırma özelliği, uygulama ayrıntılarını kaldırırken temel kod yapılarını akıllıca çıkarmak için Tree-sitter kullanır. Bu, önemli yapısal bilgileri korurken token sayısını azaltmaya yardımcı olur.
Temel avantajlar:
- Token sayısını önemli ölçüde azaltır
- Sınıf ve fonksiyon imzalarını korur
- İçe ve dışa aktarmaları muhafaza eder
- Tür tanımlarını ve arayüzleri korur
- Fonksiyon gövdelerini ve uygulama ayrıntılarını kaldırır
Daha fazla ayrıntı ve örnek için Kod Sıkıştırma Kılavuzu sayfasına bakın.
Git Entegrasyonu
output.git yapılandırması güçlü Git destekli özellikler sunar:
sortByChanges: True olduğunda, dosyalar Git değişiklik sayısına (dosyayı değiştiren commit sayısı) göre sıralanır. Daha fazla değişikliğe sahip dosyalar çıktının altında görünür. Bu, daha aktif geliştirilen dosyalara öncelik verilmesine yardımcı olur. Varsayılan:truesortByChangesMaxCommits: Dosya değişikliklerini sayarken analiz edilecek maksimum commit sayısı. Varsayılan:100includeDiffs: True olduğunda, çıktıya Git farklarını dahil eder (hem çalışma ağacını hem de aşamalı değişiklikleri ayrı ayrı içerir). Bu, okuyucunun depodaki bekleyen değişiklikleri görmesini sağlar. Varsayılan:falseincludeLogs: True olduğunda, çıktıya Git commit geçmişini dahil eder. Her commit için commit tarihlerini, mesajlarını ve dosya yollarını gösterir. Bu, AI'ın geliştirme kalıplarını ve dosya ilişkilerini anlamasına yardımcı olur. Varsayılan:falseincludeLogsCount: Git günlüklerine dahil edilecek son commit sayısı. Varsayılan:50
Örnek yapılandırma:
{
"output": {
"git": {
"sortByChanges": true,
"sortByChangesMaxCommits": 100,
"includeDiffs": true,
"includeLogs": true,
"includeLogsCount": 25
}
}
}Güvenlik Kontrolleri
security.enableSecurityCheck etkinleştirildiğinde, Repomix çıktıya dahil etmeden önce kod tabanınızdaki hassas bilgileri tespit etmek için Secretlint kullanır. Bu, aşağıdakilerin yanlışlıkla ifşa edilmesinin önüne geçmeye yardımcı olur:
- API anahtarları
- Erişim token'ları
- Özel anahtarlar
- Parolalar
- Diğer hassas kimlik bilgileri
Yorum Kaldırma
output.removeComments true olarak ayarlandığında, çıktı boyutunu azaltmak ve temel kod içeriğine odaklanmak için desteklenen dosya türlerinden yorumlar kaldırılır. Bu özellikle şu durumlarda yararlı olabilir:
- Yoğun biçimde belgelenmiş kodla çalışırken
- Token sayısını azaltmaya çalışırken
- Kod yapısına ve mantığına odaklanırken
Desteklenen diller ve ayrıntılı örnekler için Yorum Kaldırma Kılavuzu sayfasına bakın.