LoginSignup
21

More than 5 years have passed since last update.

node-configを使ってみた

Last updated at Posted at 2015-11-13

node-config とは、以下に示すような機能を提供してくれるパッケージ。

  • アプリケーションのデプロイに対する、階層的な設定を管理することできる。
  • デフォルト設定を定義することができ、developmentやproductionなど、異なるデプロイ環境に拡張することができる。
  • 設定は、アプリケーション内に保存され、環境変数やコマンドラインパラメータ、外部ソースにより上書きすることができる。

詳細は、node-configのREADMEにて。

準備する

適当にプロジェクトを作り、node-configをインストールする。

$ npm init
$ npm install config --save
$ touch index.js

index.js のコードは以下。

var config = require('config');

console.log("NODE_ENV=%s", process.env.NODE_ENV);
console.log(JSON.stringify(config));

configファイルを作る。configディレクトリ配下に、default.jsondevelopment.jsonproduction.jsonを作る。各ファイルの内容は、ここから参照可能。

.
├── config
│   ├── default.json
│   ├── development.json
│   └── production.json
├── index.js
├── node_modules
│   └── config
└── package.json

試してみる

NODE_ENVをいろいろ変えて、動かしてみる。

NODE_ENV=development

期待通り、config/development.jsonが読み込まれている。

$ NODE_ENV=development node index.js 
NODE_ENV=development
{"message":"This is a development config"}

NODE_ENV=production

期待通り、config/production.jsonが読み込まれている。

$ NODE_ENV=production node index.js 
NODE_ENV=production
{"message":"This is a production config"}

NODE_ENVに指定しない

何も指定しないと、config/development.jsonが読み込まれた。config/default.jsonが読み込まれることを期待していたが、結果は異なった。

$ node index.js 
NODE_ENV=undefined
{"message":"This is a development config"}

NODE_ENVに何も設定しない場合、config/development.jsonというファイルが存在すれば、それを読み込むのかもしれない。

試しに、config/development.jsonを、config/dev.jsonに変更して再度実行してみた。すると、config/default.jsonが読み込まれたので、そういうことなのだろう。

$ node index.js 
NODE_ENV=undefined
{"message":"This is a default config"}

NODE_ENV=hoge

誤った値が設定されていると、config/default.jsonが読み込まれる。

$ NODE_ENV=hoge node index.js 
WARNING: NODE_ENV value of 'hoge' did match any deployment  config file names.
WARNING: See https://github.com/lorenwest/node-config/wiki/Strict-Mode
NODE_ENV=hoge
{"message":"This is a default config"}

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
21