Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

node-configを使ってみた

More than 5 years have passed since last update.

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"}
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away