LoginSignup
0
2

More than 5 years have passed since last update.

nodeのconfigモジュール使い方メモ

Last updated at Posted at 2019-01-01

読み込みファイルの場所

configはアプリケーションのルートから見て./configの場所のディレクトリの中にある設定ファイルを読み込みます。
この設定は環境変数NODE_CONFIG_DIRで上書き可能です。また、requireする前であればnodeプログラムの中でも指定する事が出来ます。

process.env["NODE_CONFIG_DIR"] = __dirname + "/configDir/";
const config = require("config");

読み込みファイル名

設定ファイルの命名規則。

default.EXT
default-{instance}.EXT
{deployment}.EXT
{deployment}-{instance}.EXT
{short_hostname}.EXT
{short_hostname}-{instance}.EXT
{short_hostname}-{deployment}.EXT
{short_hostname}-{deployment}-{instance}.EXT
{full_hostname}.EXT
{full_hostname}-{instance}.EXT
{full_hostname}-{deployment}.EXT
{full_hostname}-{deployment}-{instance}.EXT
local.EXT
local-{instance}.EXT
local-{deployment}.EXT
local-{deployment}-{instance}.EXT
(任意のファイル名で上書き可能)

ファイル名で使われる変数

  NODE_ENV = util.initParam('NODE_ENV', 'development');
  NODE_ENV = util.initParam('NODE_CONFIG_ENV', NODE_ENV);
  NODE_ENV = NODE_ENV.split(',');
  • short_hostnameとfull_hostnameのコードは以下の通り。設定osモジュールのhostname()、HOST設定、HOSTNAME設定から最初にあった値を取る。shortの方は、ピリオドで区切った一番最初。
HOST = util.initParam('HOST');
HOSTNAME = util.initParam('HOSTNAME');
var hostName = HOST || HOSTNAME;
if (!hostName) {
  var OS = require('os');
  hostName = OS.hostname();
}
var short_hostname = hostName.split('.')[0];
var full_hostname = hostName;

localファイルの注意点

local ファイルはバージョンコントロールに入れるべきではありません との事。

ファイルの中身(独自研究)

ファイルの中身はkey-value形式に展開される模様。
オブジェクトはマージされる。が、配列は置き換えされるので注意。

ファイルを読み込む時に//形式と/* ... */形式のコメントは削除されるので、通常この形式のコメントが使えないjsonでもコメントを書くことが出来ます。

バックスラッシュはpropertiesでもjsonでもエスケープ必須なので注意

ファイルの読み込み

基本的な読み込み方法は以下の通り。

const config = require('config');
config.get("xxx")

戻り値に数字、nullが入る場合もある。json型の場合は数字か文字列型かを指定出来るが、properties型のファイルではそれを指定する事は出来ない?

config.xxxという指定も出来るが、これは互換性の為に残っているので使うべきではない。

config.has("xxx")で値の存在確認が出来る。

キーはあるけど値が無い。という場合はnullが帰ってくる。例えばproperties型のファイルでは、キーだけの定義が出来る。

キーに使えない文字

get has utilというキーは予約済みなので使えない。

環境変数で値を上書き

NODE_CONFIGという環境変数、もしくはコマンドライン引数でjson型の設定を渡すことが出来る。ダブルクオートを指定する方法がシェルによって異なるので注意。

0
2
0

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
0
2