答えにくいです。私はこれがコメントのために長すぎるので、これを投稿します。
回答は、あなたのパッケージの組織の残りの部分に依存しているかもしれません(このconfファイルのみ、または他のものがありますか?
これは私がこれを整理する方法です。 最高の組織だとは言えませんが(結局のところ、他の人たちが私よりも良い方法を持っているかどうかわかりません)、私のニーズに合っています。私はあなたの質問を超えて答えなければならない "どこにそれを置くために?"私は同じ設定でいくつかのファイルを使用しているからです(しかし異なる目的で使用されます、以下を参照)。
これまでのところ、すべての異なるconfファイルを同じディレクトリに集めることができました(これにより、一連の変数、ロギング設定、いくつかのパッケージの特定の設定など)。
同じことが1つのconfファイルにのみ適用できます。後で別のconfファイルが必要な場合は、どこに置くことができるかわかります。既に正しいパスが入っている変数を使用できます。
あなたの例では、私はそれらをpackage/dist/settings/default/
に置き、git
(またはあなたのVCS)によって追跡される完全なデフォルト設定をそのまま残します。本番環境で使用されているときにパッケージが使用できるデフォルトの作業状態 "state"。このファイルは、ユーザーが変更するものではありません。それでpackage/dist/settings/dev/
git
で、私はいつもgit
で悩まされることなく、私のニーズに合うように構成を変更することができます(default/
ディレクトリにデフォルト設定を維持しながら) "dev"のバージョンを入れました。これは頻繁に変更されるため、デバッグ設定に特に便利です。 (ただし、ログ専用のconfファイルでは面白いわけではありませんが、システム全体のconfファイルは/etc/mypackage/
に格納でき、ユーザの再定義された設定は~/.config/my_package/
に格納できます)。
設定をロードするとき、私のパッケージは最初にすべての値が定義されていることを確認するためにデフォルト設定を読み込みます。次に、/etc/mypackage/
にconfファイルがあれば、それに続いて~/.config/my_package/
に、そして最後にpackage/dist/settings/dev/
にconfファイルがあるかどうかがチェックされます。それが見つかるたびに、再定義された値がオーバーライドされます。 (私の設定ファイルはすべてyamlで書かれているので、見つかった既存の各ファイルは辞書としてロードされており、これらの新しい値を使ってデフォルトの設定をupdate
にするだけです。他の人はデフォルト値に設定したままにします)。
もっと知るには、既存のプロジェクトをブラウズして、他の人がどのように行動するかを確認するのがよい方法です。