Конфигурация
Repomix можно настроить с помощью файла конфигурации или параметров командной строки. Файл конфигурации позволяет настраивать различные аспекты обработки и вывода вашей кодовой базы.
Форматы файла конфигурации
Repomix поддерживает несколько форматов файлов конфигурации для гибкости и удобства использования.
Repomix автоматически ищет файлы конфигурации в следующем порядке приоритета:
- TypeScript (
repomix.config.ts,repomix.config.mts,repomix.config.cts) - JavaScript/ES Module (
repomix.config.js,repomix.config.mjs,repomix.config.cjs) - JSON (
repomix.config.json5,repomix.config.jsonc,repomix.config.json)
Конфигурация JSON
Создайте файл конфигурации в директории вашего проекта:
repomix --initЭто создаст файл repomix.config.json с настройками по умолчанию. Вы также можете создать глобальный файл конфигурации, который будет использоваться как запасной, когда локальная конфигурация не найдена:
repomix --init --globalКонфигурация TypeScript
Файлы конфигурации TypeScript предоставляют лучший опыт разработки с полной проверкой типов и поддержкой IDE.
Установка:
Чтобы использовать конфигурацию TypeScript или JavaScript с defineConfig, вам нужно установить Repomix как dev-зависимость:
npm install -D repomixПример:
// repomix.config.ts
import { defineConfig } from 'repomix';
export default defineConfig({
output: {
filePath: 'output.xml',
style: 'xml',
removeComments: true,
},
ignore: {
customPatterns: ['**/node_modules/**', '**/dist/**'],
},
});Преимущества:
- ✅ Полная проверка типов TypeScript в вашей IDE
- ✅ Отличное автодополнение и IntelliSense
- ✅ Использование динамических значений (временные метки, переменные окружения и т.д.)
Пример с динамическими значениями:
// repomix.config.ts
import { defineConfig } from 'repomix';
// Генерация имени файла на основе временной метки
const timestamp = new Date().toISOString().slice(0, 19).replace(/[:.]/g, '-');
export default defineConfig({
output: {
filePath: `output-${timestamp}.xml`,
style: 'xml',
},
});Конфигурация JavaScript
Файлы конфигурации JavaScript работают так же, как TypeScript, поддерживая defineConfig и динамические значения.
Параметры конфигурации
| Параметр | Описание | По умолчанию |
|---|---|---|
input.maxFileSize | Максимальный размер файла в байтах для обработки. Файлы больше этого значения будут пропущены. Полезно для исключения больших бинарных или data-файлов | 50000000 |
output.filePath | Имя выходного файла. Поддерживает форматы XML, Markdown и простой текст | "repomix-output.xml" |
output.style | Стиль вывода (xml, markdown, json, plain). Каждый формат имеет свои преимущества для разных ИИ-инструментов | "xml" |
output.parsableStyle | Экранировать вывод согласно выбранной схеме стиля. Улучшает парсинг, но может увеличить количество токенов | false |
output.compress | Выполнять интеллектуальное извлечение кода с помощью Tree-sitter для уменьшения количества токенов при сохранении структуры | false |
output.headerText | Пользовательский текст для включения в заголовок файла. Полезно для предоставления контекста или инструкций для ИИ-инструментов | null |
output.instructionFilePath | Путь к файлу с детальными пользовательскими инструкциями для обработки ИИ | null |
output.fileSummary | Включать ли раздел сводки в начале с количеством файлов, размерами и другими метриками | true |
output.directoryStructure | Включать ли структуру директорий в вывод. Помогает ИИ понять организацию проекта | true |
output.files | Включать ли содержимое файлов в вывод. Установите false для включения только структуры и метаданных | true |
output.removeComments | Удалять ли комментарии из поддерживаемых типов файлов. Может уменьшить шум и количество токенов | false |
output.removeEmptyLines | Удалять ли пустые строки из вывода для уменьшения количества токенов | false |
output.showLineNumbers | Добавлять ли номера строк к каждой строке. Полезно для ссылок на конкретные части кода | false |
output.truncateBase64 | Обрезать ли длинные строки base64-данных (например, изображения) для уменьшения количества токенов | false |
output.copyToClipboard | Копировать ли вывод в системный буфер обмена помимо сохранения файла | false |
output.topFilesLength | Количество топ-файлов для отображения в сводке. Если установлено 0, сводка не будет отображаться | 5 |
output.includeEmptyDirectories | Включать ли пустые директории в структуру репозитория | false |
output.includeFullDirectoryStructure | При использовании паттернов include отображать ли полное дерево директорий (с учётом паттернов игнорирования), обрабатывая только включённые файлы. Предоставляет полный контекст репозитория для анализа ИИ | false |
output.git.sortByChanges | Сортировать ли файлы по количеству изменений в git. Файлы с большим количеством изменений появляются внизу | true |
output.git.sortByChangesMaxCommits | Максимальное количество коммитов для анализа изменений git. Ограничивает глубину истории для производительности | 100 |
output.git.includeDiffs | Включать ли git diff в вывод. Показывает изменения рабочего дерева и staged отдельно | false |
output.git.includeLogs | Включать ли git-логи в вывод. Показывает историю коммитов с датами, сообщениями и путями файлов | false |
output.git.includeLogsCount | Количество git-коммитов для включения в вывод | 50 |
include | Паттерны файлов для включения с использованием glob-паттернов | [] |
ignore.useGitignore | Использовать ли паттерны из файла .gitignore проекта | true |
ignore.useDotIgnore | Использовать ли паттерны из файла .ignore проекта | true |
ignore.useDefaultPatterns | Использовать ли паттерны игнорирования по умолчанию (node_modules, .git и т.д.) | true |
ignore.customPatterns | Дополнительные паттерны для игнорирования с использованием glob-паттернов | [] |
security.enableSecurityCheck | Выполнять ли проверки безопасности с помощью Secretlint для обнаружения конфиденциальной информации | true |
tokenCount.encoding | Кодировка подсчёта токенов, используемая токенизатором OpenAI tiktoken. Используйте o200k_base для GPT-4o, cl100k_base для GPT-4/3.5. См. tiktoken model.py для деталей. | "o200k_base" |
Файл конфигурации поддерживает синтаксис JSON5, который позволяет:
- Комментарии (как однострочные, так и многострочные)
- Завершающие запятые в объектах и массивах
- Имена свойств без кавычек
- Более гибкий синтаксис строк
Валидация схемы
Вы можете включить валидацию схемы для вашего файла конфигурации, добавив свойство $schema:
{
"$schema": "https://repomix.com/schemas/latest/schema.json",
"output": {
"filePath": "repomix-output.xml",
"style": "xml"
}
}Это обеспечивает автодополнение и валидацию в редакторах, поддерживающих JSON-схему.
Пример файла конфигурации
Вот пример полного файла конфигурации (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": "Пользовательская информация заголовка для упакованного файла.",
"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,
// Паттерны также можно указать в .repomixignore
"customPatterns": [
"additional-folder",
"**/*.log"
],
},
"security": {
"enableSecurityCheck": true
},
"tokenCount": {
"encoding": "o200k_base"
}
}Расположение файлов конфигурации
Repomix ищет файлы конфигурации в следующем порядке:
- Локальный файл конфигурации в текущей директории (порядок приоритета: 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:
- Глобальный файл конфигурации (порядок приоритета: 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:
Параметры командной строки имеют приоритет над настройками файла конфигурации.
Паттерны включения
Repomix поддерживает указание файлов для включения с помощью glob-паттернов. Это позволяет более гибко и мощно выбирать файлы:
- Используйте
**/*.jsдля включения всех JavaScript-файлов в любой директории - Используйте
src/**/*для включения всех файлов в директорииsrcи её поддиректориях - Комбинируйте несколько паттернов, например
["src/**/*.js", "**/*.md"]для включения JavaScript-файлов вsrcи всех Markdown-файлов
Вы можете указать паттерны включения в файле конфигурации:
{
"include": ["src/**/*", "tests/**/*.test.js"]
}Или используйте параметр командной строки --include для одноразовой фильтрации.
Паттерны игнорирования
Repomix предлагает несколько методов для установки паттернов игнорирования для исключения конкретных файлов или директорий в процессе упаковки:
- .gitignore: По умолчанию используются паттерны из файлов
.gitignoreвашего проекта и.git/info/exclude. Это поведение можно контролировать с помощью настройкиignore.useGitignoreили параметра CLI--no-gitignore. - .ignore: Вы можете использовать файл
.ignoreв корне проекта, следуя тому же формату, что и.gitignore. Этот файл учитывается такими инструментами, как ripgrep и silver searcher, что уменьшает необходимость поддерживать несколько файлов игнорирования. Это поведение можно контролировать с помощью настройкиignore.useDotIgnoreили параметра CLI--no-dot-ignore. - Паттерны по умолчанию: Repomix включает список по умолчанию часто исключаемых файлов и директорий (например, node_modules, .git, бинарные файлы). Эту функцию можно контролировать с помощью настройки
ignore.useDefaultPatternsили параметра CLI--no-default-patterns. Подробнее см. defaultIgnore.ts. - .repomixignore: Вы можете создать файл
.repomixignoreв корне проекта для определения паттернов игнорирования, специфичных для Repomix. Этот файл следует тому же формату, что и.gitignore. - Пользовательские паттерны: Дополнительные паттерны игнорирования можно указать с помощью параметра
ignore.customPatternsв файле конфигурации. Вы можете переопределить эту настройку с помощью параметра командной строки-i, --ignore.
Порядок приоритета (от высшего к низшему):
- Пользовательские паттерны (
ignore.customPatterns) - Файлы игнорирования (
.repomixignore,.ignore,.gitignoreи.git/info/exclude):- Во вложенных директориях файлы в более глубоких директориях имеют более высокий приоритет
- В одной директории эти файлы объединяются без определённого порядка
- Паттерны по умолчанию (если
ignore.useDefaultPatternsравно true и--no-default-patternsне используется)
Этот подход позволяет гибко настраивать исключение файлов в соответствии с потребностями вашего проекта. Это помогает оптимизировать размер сгенерированного упакованного файла, обеспечивая исключение файлов, чувствительных к безопасности, и больших бинарных файлов, предотвращая утечку конфиденциальной информации.
Примечание: Бинарные файлы не включаются в упакованный вывод по умолчанию, но их пути перечислены в разделе «Repository Structure» выходного файла. Это обеспечивает полный обзор структуры репозитория, сохраняя упакованный файл эффективным и текстовым. См. Обработка бинарных файлов для подробностей.
Пример .repomixignore:
# Директории кэша
.cache/
tmp/
# Выходные файлы сборки
dist/
build/
# Логи
*.logПаттерны игнорирования по умолчанию
Когда ignore.useDefaultPatterns равно true, Repomix автоматически игнорирует типичные паттерны:
node_modules/**
.git/**
coverage/**
dist/**Полный список см. в defaultIgnore.ts
Обработка бинарных файлов
Бинарные файлы (такие как изображения, PDF, скомпилированные бинарники, архивы и т.д.) обрабатываются особым образом для поддержания эффективного текстового вывода:
- Содержимое файлов: Бинарные файлы не включаются в упакованный вывод, чтобы сохранить файл текстовым и эффективным для обработки ИИ
- Структура директорий: Пути бинарных файлов перечислены в разделе структуры директорий, предоставляя полный обзор вашего репозитория
Этот подход обеспечивает полный обзор структуры вашего репозитория, сохраняя эффективный текстовый вывод, оптимизированный для потребления ИИ.
Пример:
Если ваш репозиторий содержит logo.png и app.jar:
- Они появятся в разделе Directory Structure
- Их содержимое не будет включено в раздел Files
Вывод структуры директорий:
src/
index.ts
utils.ts
assets/
logo.png
build/
app.jarТаким образом, ИИ-инструменты могут понять, что эти бинарные файлы существуют в структуре вашего проекта, не обрабатывая их бинарное содержимое.
Примечание: Вы можете контролировать максимальный порог размера файла с помощью параметра конфигурации input.maxFileSize (по умолчанию: 50 МБ). Файлы больше этого лимита будут полностью пропущены.
Продвинутые возможности
Сжатие кода
Функция сжатия кода, включаемая с помощью output.compress: true, использует Tree-sitter для интеллектуального извлечения существенных структур кода при удалении деталей реализации. Это помогает уменьшить количество токенов, сохраняя важную структурную информацию.
Ключевые преимущества:
- Значительное уменьшение количества токенов
- Сохранение сигнатур классов и функций
- Сохранение импортов и экспортов
- Сохранение определений типов и интерфейсов
- Удаление тел функций и деталей реализации
Подробнее и примеры см. в Руководстве по сжатию кода.
Интеграция с Git
Конфигурация output.git предоставляет мощные функции, учитывающие Git:
sortByChanges: Когда true, файлы сортируются по количеству изменений Git (коммитов, изменивших файл). Файлы с большим количеством изменений появляются внизу вывода. Это помогает приоритизировать более активно разрабатываемые файлы. По умолчанию:truesortByChangesMaxCommits: Максимальное количество коммитов для анализа при подсчёте изменений файлов. По умолчанию:100includeDiffs: Когда true, включает различия Git в вывод (включает изменения рабочего дерева и staged отдельно). Это позволяет видеть ожидающие изменения в репозитории. По умолчанию:falseincludeLogs: Когда true, включает историю Git-коммитов в вывод. Показывает даты коммитов, сообщения и пути файлов для каждого коммита. Это помогает ИИ понимать паттерны разработки и связи файлов. По умолчанию:falseincludeLogsCount: Количество последних коммитов для включения в git-логи. По умолчанию:50
Пример конфигурации:
{
"output": {
"git": {
"sortByChanges": true,
"sortByChangesMaxCommits": 100,
"includeDiffs": true,
"includeLogs": true,
"includeLogsCount": 25
}
}
}Проверки безопасности
Когда security.enableSecurityCheck включен, Repomix использует Secretlint для обнаружения конфиденциальной информации в вашей кодовой базе перед включением её в вывод. Это помогает предотвратить случайное раскрытие:
- API-ключей
- Токенов доступа
- Приватных ключей
- Паролей
- Других конфиденциальных учётных данных
Удаление комментариев
Когда output.removeComments установлено в true, комментарии удаляются из поддерживаемых типов файлов для уменьшения размера вывода и фокусировки на существенном содержимом кода. Это может быть особенно полезно, когда:
- Работаете с сильно документированным кодом
- Пытаетесь уменьшить количество токенов
- Фокусируетесь на структуре и логике кода
Поддерживаемые языки и подробные примеры см. в Руководстве по удалению комментариев.