Использование Repomix как библиотеки
Помимо использования Repomix как CLI-инструмента, вы можете интегрировать его функциональность напрямую в ваши Node.js-приложения.
Установка
Установите Repomix как зависимость в вашем проекте:
bash
npm install repomixБазовое использование
Самый простой способ использовать Repomix — через функцию runCli, которая предоставляет ту же функциональность, что и интерфейс командной строки:
javascript
import { runCli, type CliOptions } from 'repomix';
// Обработка текущей директории с пользовательскими опциями
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 содержит информацию об обработанных файлах, включая:
totalFiles: Количество обработанных файловtotalCharacters: Общее количество символовtotalTokens: Общее количество токенов (полезно для ограничений контекста LLM)fileCharCounts: Количество символов по файламfileTokenCounts: Количество токенов по файлам
Обработка удалённых репозиториев
Вы можете клонировать и обработать удалённый репозиторий:
javascript
import { runCli, type CliOptions } from 'repomix';
// Клонировать и обработать GitHub-репозиторий
async function processRemoteRepo(repoUrl) {
const options = {
remote: repoUrl,
output: 'output.xml',
compress: true
} as CliOptions;
return await runCli(['.'], process.cwd(), options);
}Использование базовых компонентов
Для большего контроля вы можете использовать низкоуровневые API Repomix напрямую:
javascript
import { searchFiles, collectFiles, processFiles, TokenCounter } from 'repomix';
async function analyzeFiles(directory) {
// Найти и собрать файлы
const { filePaths } = await searchFiles(directory, { /* config */ });
const rawFiles = await collectFiles(filePaths, directory);
const processedFiles = await processFiles(rawFiles, { /* config */ });
// Подсчитать токены
const tokenCounter = new TokenCounter('o200k_base');
// Вернуть результаты анализа
return processedFiles.map(file => ({
path: file.path,
tokens: tokenCounter.countTokens(file.content)
}));
}Реальный пример
Сайт Repomix (repomix.com) использует Repomix как библиотеку для обработки удалённых репозиториев. Вы можете увидеть реализацию в website/server/src/remoteRepo.ts.