Repomix'i Kütüphane Olarak Kullanma
Repomix'i yalnızca bir CLI aracı olarak kullanmakla kalmayıp, işlevselliğini doğrudan Node.js uygulamalarınıza da entegre edebilirsiniz.
Kurulum
Repomix'i projenize bağımlılık olarak yükleyin:
npm install repomixTemel Kullanım
Repomix'i kullanmanın en basit yolu, komut satırı arayüzüyle aynı işlevselliği sunan runCli fonksiyonudur:
import { runCli, type CliOptions } from 'repomix';
// Process current directory with custom options
async function packProject() {
const options = {
output: 'output.xml',
style: 'xml',
compress: true,
quiet: true
} as CliOptions;
const result = await runCli(['.'], process.cwd(), options);
return result.packResult;
}result.packResult, işlenen dosyalar hakkında aşağıdaki bilgileri içerir:
totalFiles: İşlenen dosya sayısıtotalCharacters: Toplam karakter sayısıtotalTokens: Toplam token sayısı (LLM bağlam sınırları için kullanışlıdır)fileCharCounts: Dosya başına karakter sayısıfileTokenCounts: Dosya başına token sayısı
Uzak Depoları İşleme
Uzak bir depoyu klonlayıp işleyebilirsiniz:
import { runCli, type CliOptions } from 'repomix';
// Clone and process a GitHub repo
async function processRemoteRepo(repoUrl) {
const options = {
remote: repoUrl,
output: 'output.xml',
compress: true
} as CliOptions;
return await runCli(['.'], process.cwd(), options);
}Temel Bileşenleri Kullanma
Daha fazla kontrol için Repomix'in alt düzey API'lerini doğrudan kullanabilirsiniz:
import { searchFiles, collectFiles, processFiles, TokenCounter } from 'repomix';
async function analyzeFiles(directory) {
// Find and collect files
const { filePaths } = await searchFiles(directory, { /* config */ });
const rawFiles = await collectFiles(filePaths, directory);
const processedFiles = await processFiles(rawFiles, { /* config */ });
// Count tokens
const tokenCounter = new TokenCounter('o200k_base');
// Return analysis results
return processedFiles.map(file => ({
path: file.path,
tokens: tokenCounter.countTokens(file.content)
}));
}Paketleme
Repomix'i Rolldown veya esbuild gibi araçlarla paketlerken bazı bağımlılıkların harici kalması ve WASM dosyalarının kopyalanması gerekir:
Harici bırakılması gereken bağımlılıklar (paketlenemez):
tinypool- Dosya yollarını kullanarak worker thread'leri başlatırtiktoken- Çalışma zamanında WASM dosyalarını dinamik olarak yükler
Kopyalanması gereken WASM dosyaları:
web-tree-sitter.wasm→ Paketlenmiş JS ile aynı dizine (kod sıkıştırma özelliği için gereklidir)- Tree-sitter dil dosyaları →
REPOMIX_WASM_DIRortam değişkeniyle belirtilen dizine
Çalışan bir örnek için website/server/scripts/bundle.mjs dosyasına bakın.
Gerçek Dünya Örneği
Repomix web sitesi (repomix.com), uzak depoları işlemek için Repomix'i kütüphane olarak kullanmaktadır. Uygulamayı website/server/src/remoteRepo.ts dosyasında inceleyebilirsiniz.