Вычислитель отличий – проект, который по-настоящему прокачивает даже опытных разработчиков. Здесь вам придется столкнуться с принятием сложных архитектурных решений, автоматизированным тестированием и непрерывной интеграцией, функциональным программированием, работе с древовидными структурами данных и рекурсивными алгоритмами.
Для начала произведем установку Commander посредством npm install commander и запустим справку как указано ниже:
Далее нам необходимо произвести проверку плоских файлов JSON. Диф строится на основе того как файлы изменились относительно друг друга, ключи выводятся в алфавитном порядке. Отсутствие плюса или минуса говорит, что ключ есть в обоих файлах, и его значения совпадают. Во всех остальных ситуациях значение по ключу либо отличается, либо ключ есть только в одном файле. Ниже приведен пример сравнения такого типа файлов (с расширениями .json и .yml):
Далее проводим рекурсивное сравнение файлов:
На этом шаге мы отделяем форматирование дифа от вычисления различий. Удобство внутреннего представления в том, что очень сильно упрощается форматирование, так как форматер работает уже с вычисленной разницей.
Проект завершаем тем, что показываем имеющиеся файлы непосредственно в формате .json: