Недавно я обнаружил, что пишу несколько интерфейсов командной строки для своих клиентов, чтобы автоматизировать задачи, каждый раз, когда я начинал с поиска пакета на npmjs.org, который инкапсулировал поведение, которое мы все знаем из таких пакетов, как babel, для разрешения конфигурации пользователей.

Перенесемся вперед, и вы уже догадались, я не нашел для него подходящего пакета. Поэтому я и начал писать find-config-up. Babel, eslint, stylelint, prettier и многие другие — все эти пакеты имеют одну общую черту: они позволяют пользователю указать конфигурацию либо в файле dot-rc, либо в файле package.json с пользовательским свойством.

find-config-up именно это и сделает, у него простой API и поддержка промисов из коробки, так что вы можете использовать его в сочетании с синтаксисом async/await.

С приведенной выше конфигурацией пакет будет…

  • … найдите файл .myfancyrc, прочитайте/разберите его как JSON и объедините его со значениями по умолчанию.
  • Если в дереве не было найдено .myfancyrc, он будет искать package.json с определенным свойством my-fancy-package.
  • Если ничего из вышеперечисленного не сработало, в качестве запасного варианта будут возвращены значения по умолчанию.

Этот пакет не является большим или умопомрачительным произведением искусства, он выполняет простую задачу (разрешить и объединить конфигурацию пользовательской среды), поэтому вы можете сосредоточиться на написании действительно важного кода!

Если вы хотите добавить функцию (-запрос) или оставить отзыв, я буду очень рад услышать от вас на GitHub, открыв вопрос.