helloworlds

not a noun, it's a verb

【npm】configパッケージについて

よくnode.jsで開発しているとconfigパッケージを使用して、 環境別の設定値を切り分けることが多いと思います。

DBの接続情報であったり、APIとかも環境によってわけて使う時などに便利です。

www.npmjs.com

使い方も簡単ですよね!

$ npm install config

あとは、/config というディレクトリを作成して、 環境名のファイルを作成するだけで、コード内で config.get('xxxx.yyyy') みたいに書くだけで値を参照できます。

nodeのプロジェクトをやっていてこのconfigは便利なのですが、 よくdefault.jsonとdevelopment.jsonはどちらが優先されるの? とか、上書きされるの?とか忘れてしまいます。。。

なので、今回はちゃんと確認してみた!という記事になります。

node_moduleの中身を確認!

ということで、configの中身を確認してみました。 (すぐできるのに今まで怠っていました。。。)

version : "^1.30.0"

node_modules/config/lib/config.js

ここに記載されていました。

Application configurations are stored in files within the config directory of your application. The default configuration file is loaded, followed by files specific to the deployment type (development, testing, staging, production, etc.).

訳すと、

アプリケーション構成は、アプリケーションのconfigディレクトリ内のファイルに格納される。デフォルト設定ファイルが読み込まれ、続いて 特定の種類にファイル(development, testing, staging, productionなど)に固有のファイルによって異なる。

なるほど、ってことは、 「さきにdefault.jsonが読み込まれる」ってことだ。

なので、default.json → development.json みたいな順番で、 仮に同じ値(ネスト構成が同じ)があれば、上書きになるってことだ。

あー、すっきりしましたw

以上