node.jsで環境別設定を行う「node-config」


lorenwest/node-config – GitHub

node.jsのプログラムでも環境の切り分け設定が全然出来ていなかったので、今回は上記のnode-configというモジュールを使ってみる事にします。

設定ファイルは、js, json, yamlで記述することができるようです。

では、インストールから。モジュール名と違うので注意してください。

$ npm install config

実際に環境別の設定ファイルを格納する場所ですが、nodeコマンドを実行したディレクトリにある「config」というディレクトリの中に格納する必要があります。

例として、expressを使ったディレクトリ構成だと以下のようになります。

.
├── app.js
├── config # 環境別設定ファイル用ディレクトリ
│   ├── default.js # デフォルト用
│   ├── development.js # 開発環境用
│   ├── test.js # テスト環境用
│   └── production.js # 本番環境用
├── node_modules
├── package.json
├── public
├── routes
└── views

上記の例では、設定ファイルの拡張子が「js」になっていますが、jsonまたはymlでも大丈夫です。

ちなみに、各環境別設定ファイルの中身はjsの場合は下記のようになります。

module.exports = {
  "DB": {
    "name": "example_dev",
    "host": "localhost"
  }
};

json, yamlの場合は、単にそれぞれのデータ形式で書けば良いだけです。

実際に使う側では、こんな感じで使えます。

var config = require('config');
console.log(config.DB.name);
console.log(config.DB.host);

node-configは環境変数「NODE_ENV」の値を見て読み込む設定ファイルを決めています。ワンライナーで環境の指定と実行をする場合は、以下のようになります。

$ NODE_ENV=development node app.js

関連記事