# Сжатие кода
Сжатие кода — это мощная функция, которая интеллектуально извлекает существенные структуры кода, удаляя детали реализации. Это особенно полезно для уменьшения количества токенов при сохранении важной структурной информации о вашей кодовой базе.
> [!NOTE]
> Это экспериментальная функция, которую мы будем активно улучшать на основе отзывов пользователей и реального использования
## Базовое использование
Включите сжатие кода с помощью флага `--compress`:
```bash
repomix --compress
```
Вы также можете использовать его с удалёнными репозиториями:
```bash
repomix --remote user/repo --compress
```
## Как это работает
Алгоритм сжатия обрабатывает код с помощью парсинга tree-sitter для извлечения и сохранения существенных структурных элементов при удалении деталей реализации.
Сжатие сохраняет:
- Сигнатуры функций и методов
- Определения интерфейсов и типов
- Структуры классов и свойства
- Важные структурные элементы
При этом удаляет:
- Реализации функций и методов
- Детали циклов и условной логики
- Внутренние объявления переменных
- Код, специфичный для реализации
### Пример
Оригинальный код TypeScript:
```typescript
import { ShoppingItem } from './shopping-item';
/**
* Рассчитать общую стоимость товаров
*/
const calculateTotal = (
items: ShoppingItem[]
) => {
let total = 0;
for (const item of items) {
total += item.price * item.quantity;
}
return total;
}
// Интерфейс товара
interface Item {
name: string;
price: number;
quantity: number;
}
```
После сжатия:
```typescript
import { ShoppingItem } from './shopping-item';
⋮----
/**
* Рассчитать общую стоимость товаров
*/
const calculateTotal = (
items: ShoppingItem[]
) => {
⋮----
// Интерфейс товара
interface Item {
name: string;
price: number;
quantity: number;
}
```
## Конфигурация
Вы можете включить сжатие в файле конфигурации:
```json
{
"output": {
"compress": true
}
}
```
## Сценарии использования
Сжатие кода особенно полезно, когда:
- Анализируете структуру и архитектуру кода
- Уменьшаете количество токенов для обработки LLM
- Создаёте высокоуровневую документацию
- Изучаете паттерны кода и сигнатуры
- Делитесь дизайном API и интерфейсов
## Связанные опции
Вы можете комбинировать сжатие с другими опциями:
- `--remove-comments`: Удаление комментариев кода
- `--remove-empty-lines`: Удаление пустых строк
- `--output-show-line-numbers`: Добавление номеров строк в вывод