---
title: "Конфигурация"
description: "Настраивайте Repomix с помощью файлов JSON, JSONC, JSON5, JavaScript или TypeScript, включая форматы вывода, шаблоны include и ignore, а также расширенные параметры."
---

# Конфигурация

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.filePathStyle`           | Способ отображения путей к файлам в выводе (`target-relative` сохраняет пути относительно каждого целевого корня, `cwd-relative` сохраняет пути относительно текущей рабочей директории) | `"target-relative"`    |
| `output.parsableStyle`           | Экранировать вывод согласно выбранной схеме стиля. Улучшает парсинг, но может увеличить количество токенов                     | `false`                |
| `output.compress`                | Выполнять интеллектуальное извлечение кода с помощью Tree-sitter для уменьшения количества токенов при сохранении структуры    | `false`                |
| `output.patterns`                | Уровни детализации для отдельных файлов. Упорядоченный массив записей `{ pattern, compress?, directoryStructureOnly? }`; побеждает первый совпавший glob-паттерн, переопределяя глобальную настройку `output.compress` для этого файла. См. [Уровни детализации для отдельных файлов](#уровни-детализации-для-отдельных-фаилов) | Не задано              |
| `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.splitOutput`             | Разделить вывод на несколько нумерованных файлов по максимальному размеру на часть (напр., `1000000` для ~1МБ). CLI принимает читаемые размеры, такие как `500kb` или `2mb`. Сохраняет каждый файл в пределах лимита и предотвращает разделение исходных файлов между частями | Не задано |
| `output.tokenBudget`             | Завершиться с ненулевым кодом выхода, когда упакованный вывод превышает указанное количество токенов. Действует как защита для контекстных лимитов CI/агентов; вывод всё равно генерируется | Не задано |
| `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 (например, `o200k_base` для GPT-4o, `cl100k_base` для GPT-4/3.5). Использует [gpt-tokenizer](https://github.com/nicolo-ribaudo/gpt-tokenizer). | `"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",
    "filePathStyle": "target-relative",
    "parsableStyle": false,
    "compress": false,
    "headerText": "Пользовательская информация заголовка для упакованного файла.",
    "fileSummary": true,
    "directoryStructure": true,
    "files": true,
    "removeComments": false,
    "removeEmptyLines": false,
    "topFilesLength": 5,
    "showLineNumbers": false,
    // "patterns": [
    //   { "pattern": "docs/**/*", "compress": true },
    //   { "pattern": "website/**/*", "directoryStructureOnly": true }
    // ],
    "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).

### Уровни детализации для отдельных файлов

В то время как `output.compress` применяет единый уровень ко всем файлам, `output.patterns` позволяет управлять уровнем детализации **для каждого glob-паттерна** из файла конфигурации. Каждая запись выбирает файлы по glob-паттерну (совпадение определяется так же, как для `include`/`ignore`) и переопределяет глобальную настройку `output.compress` для совпавших файлов.

```json5
{
  "output": {
    "compress": false, // глобальное значение по умолчанию действует как универсальное правило
    "patterns": [
      { "pattern": "docs/**/*", "compress": true },
      { "pattern": "website/**/*", "directoryStructureOnly": true }
    ]
  }
}
```

Каждый файл получает один из трёх уровней:

- **Полное содержимое** (по умолчанию): включается полное содержимое файла.
- **Сжатый** (`compress: true`): содержимое проходит через тот же конвейер Tree-sitter, что и при `output.compress`.
- **Только структура директорий** (`directoryStructureOnly: true`): файл указывается в структуре директорий, но его блок содержимого полностью исключается из вывода.

Правила:

- Паттерны вычисляются в порядке следования в массиве, и для конкретного файла **побеждает первый совпавший паттерн**.
- Флаги совпавшего паттерна переопределяют глобальную настройку `output.compress`. Паттерн, который совпадает, но не задаёт ни одного флага, принудительно устанавливает **полное содержимое** для этого файла, что удобно для исключения файлов из глобального `compress` (whitelisting).
- `directoryStructureOnly` имеет приоритет над `compress`, когда оба флага заданы в одном паттерне.
- Если ни один паттерн не совпадает, применяется глобальное поведение (полное содержимое или сжатый вариант, когда `output.compress` равно `true`).

Эта опция доступна только в файле конфигурации; эквивалентного параметра CLI нет.

### Интеграция с 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).

## Связанные ресурсы

- [Параметры командной строки](/ru/guide/command-line-options) - Полная справка по CLI (параметры CLI переопределяют настройки файла конфигурации)
- [Форматы вывода](/ru/guide/output) - Подробности о каждом формате вывода
- [Безопасность](/ru/guide/security) - Как Repomix обнаруживает конфиденциальную информацию
- [Сжатие кода](/ru/guide/code-compress) - Уменьшение количества токенов с помощью Tree-sitter
- [Обработка GitHub-репозиториев](/ru/guide/remote-repository-processing) - Опции для удалённых репозиториев
