Нелегко ответить. Я публикую это, потому что слишком длинный комментарий.
Ответ может зависеть от остальной организации вашего пакета (например, у вас есть только этот файл conf или некоторые другие? Может появиться другой файл conf через день?).
Вот как я это организую. Хотя я не могу сказать, что это организация (я не знаю, есть ли у других лучший способ, чем мой, в конце концов), это соответствует моим потребностям довольно хорошо, и я думаю, было бы полезно поделиться им. Я должен ответить за ваш вопрос «где поставить это?» потому что я использую несколько файлов для тех же настроек (но используется в разных целях, см. ниже).
До сих пор мне было удобно собирать все файлы conf в одном каталоге (это позволяет настроить одну переменную, содержащую путь ко всем настройкам, а не пучок переменных, один для параметров ведения журнала, один для некоторые настройки конкретного пакета и т. д.).
То же самое применимо только к одному файлу conf: если позже потребуется другой файл conf, я знаю, где его можно поместить, и я могу использовать переменную, которая уже содержит правильный путь.
В вашем примере я бы разместил их в package/dist/settings/default/
и оставил полную конфигурацию по умолчанию, отслеживаемую git
(или вашим VCS), например. стандартное рабочее «состояние», которое может быть установлено при использовании в производстве. Этот файл не предназначен для изменения пользователем. Затем в package/dist/settings/dev/
я помещал версии «dev» (не отслеживаемые git
), где я могу изменить конфигурацию в соответствии с моими потребностями при разработке, не беспокоясь о git
в любое время (и сохраняя при этом значения по умолчанию неизменными в каталоге default/
). Это особенно полезно для отладки настроек, поскольку они часто меняются. (Тогда, хотя они не интересны для conf-файла только для ведения журналов, я упоминаю, что общесистемные файлы conf могут храниться в /etc/mypackage/
, а переопределенные настройки пользователя могут быть сохранены в ~/.config/my_package/
).
При загрузке параметров мой пакет сначала загружает конфигурацию по умолчанию, чтобы обеспечить определение всех значений. Затем он последовательно проверяет, есть ли какой-либо файл conf в /etc/mypackage/
, затем в ~/.config/my_package/
и, наконец, в package/dist/settings/dev/
. Каждый раз, когда он находит один, он переопределяет (возможно) переопределенные значения. (Так как все файлы конфигурации записаны в yaml, каждый найденный файл загружается в качестве словаря, и я просто update
по умолчанию с этими новыми значениями. Таким образом, я могу изменять только те параметры, которые мне нравятся в моей конфигурации dev, а не упоминание остальные оставят для них значения по умолчанию).
Хороший способ узнать больше - просмотреть существующие проекты и посмотреть, как это делают другие.