codemap-cli
v1.1.0
Published
Convert code repos into a single LLM-friendly text snapshot
Readme
Codemap-cli
codemap-cli — кроссплатформенная утилита командной строки для создания текстового снепшота репозитория. Инструмент конвертирует дерево файлов в единый структурированный текстовый файл, удобный для анализа, аудита или передачи в сторонние инструменты.
Основные возможности
• обработка игнор-файлов (.gitignore, .gptignore, .codemapignore, .dockerignore)
• рекурсивный обход директории
• исключение бинарных файлов
• корректная работа с UTF-8, включая многоязычные комментарии
• вывод в одном текстовом файле с блоками # file: ... и code fences
• кроссплатформенная работа (Windows, macOS, Linux)
• возможность глобальной установки и запуска из любой директории
Установка
Глобальная установка
npm install -g codemap-cliПосле установки команда codemap становится доступна в $PATH.
Локальная установка в проект
npm install --save-dev codemap-cliИспользование через npx
npx codemap .Быстрый старт
Создать снепшот текста из текущей директории
codemap .По умолчанию будет создан файл output.txt в текущей папке.
Указать путь и файл вывода
codemap ./frontend -o frontend.txtДобавить преамбулу
codemap . -o snapshot.txt -p preamble.txtВывести результат в STDOUT
codemap . -o -Поддерживаемые ignore-файлы
Утилита автоматически обрабатывает следующие файлы (если они присутствуют в корне дерева):
.codemapignore.gptignore.gitignore.dockerignore
Формат соответствует синтаксису .gitignore.
Файлы игнора:
- используются как источник правил исключения
- не включаются в итоговый снепшот
Принцип работы
1. Определение корневой директории
Первый позиционный аргумент команды задаёт путь.
Если он отсутствует — используется . (текущая директория).
2. Загрузка ignore-правил
Утилита:
- подгружает стандартные исключения (например,
node_modules/,.git/) - ищет и загружает поддерживаемые ignore-файлы
- объединяет все правила в единый фильтр
3. Рекурсивный обход дерева
Алгоритм:
- обходит директории с помощью
fs.readdirSyncиrecursive walk - пропускает игнорируемые пути
- пропускает бинарные файлы (определяются наличием
0x00)
4. Определение типа файла
Язык подсветки для блока определяется по расширению файла:.js → javascript, .ts → typescript, .vue → vue, и т.д.
5. Формирование снепшота
Результат записывается в одном текстовом файле с таким форматом:
# file: src/index.js
```javascript
console.log("example");
```Опции CLI
| Опция | Описание |
| ----------------------- | -------------------------------------------------------------- |
| [path] | Путь к каталогу (по умолчанию .) |
| -o, --output <file> | Имя файла вывода или - для STDOUT. По умолчанию output.txt |
| -p, --preamble <file> | Путь к файлу, содержимое которого будет добавлено в начало |
| -h, --help | Показать справку |
Примеры использования
Генерация текстового слепка фронтенда
cd project/frontend
codemap . -o frontend.txtСнепшот всей монорепы
codemap . -o repo.txtСнепшот с преамбулой (например, инструкцией)
codemap . -p docs/header.txt -o summary.txtТестирование
Для запуска тестов требуется Node.js v18+.
Запуск:
npm testТесты покрывают:
- парсинг аргументов
- обработку игнор-файлов
- определение бинарных/текстовых файлов
- форматирование вывода
- рекурсивный обход каталога
Ограничения
- Вложенные
.gitignore(в поддиректориях) на данный момент не обрабатываются. В будущем может быть добавлена расширенная поддержка. - Бинарные файлы исключаются полностью и не получают даже заголовочного блока.
- Поддержка других форматов вывода (JSON, Markdown-таблица и т.д.) отсутствует в текущей версии.
Лицензия
MIT License
