Утилита командной строки для сравнения конфигурационных файлов в форматах JSON и YAML.
# Установка зависимостей
make install
# Линтинг
make lint
# Тесты
make test
# Покрытие кода
make coverage
# Создание глобальной ссылки
make linksrc/
├── diff.js # Главный API
├── parser.js # Парсинг JSON/YAML файлов
├── formatter/
│ ├── index.js # Выбор и вызов форматтеров
│ ├── stylish.js # Stylish форматтер
│ ├── plain.js # Plain форматтер
│ └── json.js # JSON форматтер
bin/
└── gendiff.js # CLI точка входа
# Базовое использование (формат stylish по умолчанию)
gendiff file1.json file2.json
# С указанием формата
gendiff -f plain file1.json file2.json
gendiff -f json file1.json file2.json
gendiff -f stylish file1.json file2.json
# С YAML файлами
gendiff file1.yml file2.yml
gendiff -f plain file1.yml file2.ymlimport genDiff from '@hexlet/code';
// Сравнение файлов
const diff = genDiff('file1.json', 'file2.json', 'formatStylish');
console.log(diff);- JSON (
.json) - YAML (
.yml,.yaml)
gendiff file1.json file2.jsonВывод:
{
- follow: false
host: hexlet.io
- proxy: 123.234.53.22
- timeout: 50
+ timeout: 20
+ verbose: true
}
gendiff -f plain file1.json file2.jsonВывод:
Property 'follow' was removed
Property 'proxy' was removed
Property 'timeout' was updated. From 50 to 20
Property 'verbose' was added with value: true
gendiff -f json file1.json file2.jsonВывод:
[
{
"type": "removed",
"key": "follow",
"value": false
},
{
"type": "unchanged",
"key": "host",
"value": "hexlet.io"
},
{
"type": "removed",
"key": "proxy",
"value": "123.234.53.22"
},
{
"type": "updated",
"key": "timeout",
"value1": 50,
"value2": 20
},
{
"type": "added",
"key": "verbose",
"value": true
}
]{
"timeout": 50,
"proxy": "123.234.53.22",
"follow": false,
"host": "hexlet.io"
}{
"timeout": 20,
"verbose": true,
"host": "hexlet.io"
}# Установка зависимостей
npm ci
# Линтинг
npm run lint
# Тесты
npm test
# Тесты в режиме наблюдения
npm run test:watch
# Покрытие кода
npm run coverage
# Создание глобальной ссылки
npm link
# Публикация (dry-run)
npm publish --dry-run__tests__/
├── genDiff.test.js # Тесты форматтеров
- Hexlet Check: Автоматическая проверка заданий
- CI Pipeline: Линтинг, тесты, покрытие кода
- SonarQube: Анализ качества кода (при наличии токенов)