Skip to main content
Glama
configuration.md28.4 kB
# Конфигурация Repomix можно настроить с помощью файла конфигурации или параметров командной строки. Файл конфигурации позволяет настраивать различные аспекты обработки и вывода вашей кодовой базы. ## Форматы файла конфигурации Repomix поддерживает несколько форматов файлов конфигурации для гибкости и удобства использования. Repomix автоматически ищет файлы конфигурации в следующем порядке приоритета: 1. **TypeScript** (`repomix.config.ts`, `repomix.config.mts`, `repomix.config.cts`) 2. **JavaScript/ES Module** (`repomix.config.js`, `repomix.config.mjs`, `repomix.config.cjs`) 3. **JSON** (`repomix.config.json5`, `repomix.config.jsonc`, `repomix.config.json`) ### Конфигурация JSON Создайте файл конфигурации в директории вашего проекта: ```bash repomix --init ``` Это создаст файл `repomix.config.json` с настройками по умолчанию. Вы также можете создать глобальный файл конфигурации, который будет использоваться как запасной, когда локальная конфигурация не найдена: ```bash repomix --init --global ``` ### Конфигурация TypeScript Файлы конфигурации TypeScript предоставляют лучший опыт разработки с полной проверкой типов и поддержкой IDE. **Установка:** Чтобы использовать конфигурацию TypeScript или JavaScript с `defineConfig`, вам нужно установить Repomix как dev-зависимость: ```bash npm install -D repomix ``` **Пример:** ```typescript // 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 - ✅ Использование динамических значений (временные метки, переменные окружения и т.д.) **Пример с динамическими значениями:** ```typescript // 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-паттернов](https://github.com/mrmlnc/fast-glob?tab=readme-ov-file#pattern-syntax) | `[]` | | `ignore.useGitignore` | Использовать ли паттерны из файла `.gitignore` проекта | `true` | | `ignore.useDotIgnore` | Использовать ли паттерны из файла `.ignore` проекта | `true` | | `ignore.useDefaultPatterns` | Использовать ли паттерны игнорирования по умолчанию (node_modules, .git и т.д.) | `true` | | `ignore.customPatterns` | Дополнительные паттерны для игнорирования с использованием [glob-паттернов](https://github.com/mrmlnc/fast-glob?tab=readme-ov-file#pattern-syntax) | `[]` | | `security.enableSecurityCheck` | Выполнять ли проверки безопасности с помощью Secretlint для обнаружения конфиденциальной информации | `true` | | `tokenCount.encoding` | Кодировка подсчёта токенов, используемая токенизатором OpenAI [tiktoken](https://github.com/openai/tiktoken). Используйте `o200k_base` для GPT-4o, `cl100k_base` для GPT-4/3.5. См. [tiktoken model.py](https://github.com/openai/tiktoken/blob/main/tiktoken/model.py#L24) для деталей. | `"o200k_base"` | Файл конфигурации поддерживает синтаксис [JSON5](https://json5.org/), который позволяет: - Комментарии (как однострочные, так и многострочные) - Завершающие запятые в объектах и массивах - Имена свойств без кавычек - Более гибкий синтаксис строк ## Валидация схемы Вы можете включить валидацию схемы для вашего файла конфигурации, добавив свойство `$schema`: ```json { "$schema": "https://repomix.com/schemas/latest/schema.json", "output": { "filePath": "repomix-output.xml", "style": "xml" } } ``` Это обеспечивает автодополнение и валидацию в редакторах, поддерживающих JSON-схему. ## Пример файла конфигурации Вот пример полного файла конфигурации (`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": "Пользовательская информация заголовка для упакованного файла.", "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 ищет файлы конфигурации в следующем порядке: 1. Локальный файл конфигурации в текущей директории (порядок приоритета: 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` 2. Глобальный файл конфигурации (порядок приоритета: 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` - 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` Параметры командной строки имеют приоритет над настройками файла конфигурации. ## Паттерны включения Repomix поддерживает указание файлов для включения с помощью [glob-паттернов](https://github.com/mrmlnc/fast-glob?tab=readme-ov-file#pattern-syntax). Это позволяет более гибко и мощно выбирать файлы: - Используйте `**/*.js` для включения всех JavaScript-файлов в любой директории - Используйте `src/**/*` для включения всех файлов в директории `src` и её поддиректориях - Комбинируйте несколько паттернов, например `["src/**/*.js", "**/*.md"]` для включения JavaScript-файлов в `src` и всех Markdown-файлов Вы можете указать паттерны включения в файле конфигурации: ```json { "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](https://github.com/yamadashy/repomix/blob/main/src/config/defaultIgnore.ts). - **.repomixignore**: Вы можете создать файл `.repomixignore` в корне проекта для определения паттернов игнорирования, специфичных для Repomix. Этот файл следует тому же формату, что и `.gitignore`. - **Пользовательские паттерны**: Дополнительные паттерны игнорирования можно указать с помощью параметра `ignore.customPatterns` в файле конфигурации. Вы можете переопределить эту настройку с помощью параметра командной строки `-i, --ignore`. **Порядок приоритета** (от высшего к низшему): 1. Пользовательские паттерны (`ignore.customPatterns`) 2. Файлы игнорирования (`.repomixignore`, `.ignore`, `.gitignore` и `.git/info/exclude`): - Во вложенных директориях файлы в более глубоких директориях имеют более высокий приоритет - В одной директории эти файлы объединяются без определённого порядка 3. Паттерны по умолчанию (если `ignore.useDefaultPatterns` равно true и `--no-default-patterns` не используется) Этот подход позволяет гибко настраивать исключение файлов в соответствии с потребностями вашего проекта. Это помогает оптимизировать размер сгенерированного упакованного файла, обеспечивая исключение файлов, чувствительных к безопасности, и больших бинарных файлов, предотвращая утечку конфиденциальной информации. **Примечание:** Бинарные файлы не включаются в упакованный вывод по умолчанию, но их пути перечислены в разделе «Repository Structure» выходного файла. Это обеспечивает полный обзор структуры репозитория, сохраняя упакованный файл эффективным и текстовым. См. [Обработка бинарных файлов](#обработка-бинарных-файлов) для подробностей. Пример `.repomixignore`: ```text # Директории кэша .cache/ tmp/ # Выходные файлы сборки dist/ build/ # Логи *.log ``` ## Паттерны игнорирования по умолчанию Когда `ignore.useDefaultPatterns` равно true, Repomix автоматически игнорирует типичные паттерны: ```text node_modules/** .git/** coverage/** dist/** ``` Полный список см. в [defaultIgnore.ts](https://github.com/yamadashy/repomix/blob/main/src/config/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](https://github.com/tree-sitter/tree-sitter) для интеллектуального извлечения существенных структур кода при удалении деталей реализации. Это помогает уменьшить количество токенов, сохраняя важную структурную информацию. Ключевые преимущества: - Значительное уменьшение количества токенов - Сохранение сигнатур классов и функций - Сохранение импортов и экспортов - Сохранение определений типов и интерфейсов - Удаление тел функций и деталей реализации Подробнее и примеры см. в [Руководстве по сжатию кода](code-compress). ### Интеграция с Git Конфигурация `output.git` предоставляет мощные функции, учитывающие Git: - `sortByChanges`: Когда true, файлы сортируются по количеству изменений Git (коммитов, изменивших файл). Файлы с большим количеством изменений появляются внизу вывода. Это помогает приоритизировать более активно разрабатываемые файлы. По умолчанию: `true` - `sortByChangesMaxCommits`: Максимальное количество коммитов для анализа при подсчёте изменений файлов. По умолчанию: `100` - `includeDiffs`: Когда true, включает различия Git в вывод (включает изменения рабочего дерева и staged отдельно). Это позволяет видеть ожидающие изменения в репозитории. По умолчанию: `false` - `includeLogs`: Когда true, включает историю Git-коммитов в вывод. Показывает даты коммитов, сообщения и пути файлов для каждого коммита. Это помогает ИИ понимать паттерны разработки и связи файлов. По умолчанию: `false` - `includeLogsCount`: Количество последних коммитов для включения в git-логи. По умолчанию: `50` Пример конфигурации: ```json { "output": { "git": { "sortByChanges": true, "sortByChangesMaxCommits": 100, "includeDiffs": true, "includeLogs": true, "includeLogsCount": 25 } } } ``` ### Проверки безопасности Когда `security.enableSecurityCheck` включен, Repomix использует [Secretlint](https://github.com/secretlint/secretlint) для обнаружения конфиденциальной информации в вашей кодовой базе перед включением её в вывод. Это помогает предотвратить случайное раскрытие: - API-ключей - Токенов доступа - Приватных ключей - Паролей - Других конфиденциальных учётных данных ### Удаление комментариев Когда `output.removeComments` установлено в `true`, комментарии удаляются из поддерживаемых типов файлов для уменьшения размера вывода и фокусировки на существенном содержимом кода. Это может быть особенно полезно, когда: - Работаете с сильно документированным кодом - Пытаетесь уменьшить количество токенов - Фокусируетесь на структуре и логике кода Поддерживаемые языки и подробные примеры см. в [Руководстве по удалению комментариев](comment-removal).

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/yamadashy/repomix'

If you have feedback or need assistance with the MCP directory API, please join our Discord server