Node.jsで設定ファイルを使うならdotenvがよさげ
SQLサーバの各種接続情報など、アプリ全体で使う設定は1つのファイルにまとまっていて欲しい。
いわゆる config ファイル的な物は、Node.js の世界ではどういう物が使われているのか調べてみた。
デフォルトは process.env モジュール
Node.js では、デフォルトで搭載されている process.env と言うモジュールで環境変数を直接読む事が可能らしい。
これは require する必要も無いらしいので、早速叩いてみる。
$ node
> console.log(process.env);
{
SHELL: '/bin/bash',
HISTCONTROL: (※以下略)
}
環境変数に登録されているものがドビャっと出て来た、なるほどこれは便利そう。
dotenv モジュール
しかし、何かアプリを作るたびに環境変数を登録するのは億劫なのも事実。
そこで便利そうなのが「dotenv」と言うモジュール、名前の通り「.env」と言うファイルをカレントディレクトリに置いておけば、それを process.env 経由で参照できるようになるとの事。
$ npm install dotenv
インストールして、実行ファイルと同じディレクトリに「.env」ファイルを設置。
# 各種設定を KEY=VALUE で書いておく
KEY1=hoge
# 空白行は無視される
KEY2=foo # ここにコメント付けても大丈夫だった
# クォーテーションはダブルでもシングルでも大丈夫だった
KEY3="piyo"
KEY4='foo'
KEY5= moge # 頭のスペースはトリミングされる模様
KEY6= ai ue o # スペースを含んでいてもクォーテーションなくて大丈夫だった
折角なので色々なパターンで書いて、わくわくしながら Node.js で読み込んでみる。
import dotenv from "dotenv";
const res = dotenv.config();
console.log(res.parsed);
dotenv を import して、その返り値をパースすると…。
$ node index.js
{
KEY1: 'hoge',
KEY2: 'foo',
KEY3: 'piyo',
KEY4: 'foo',
KEY5: 'moge',
KEY6: 'ai ue o'
}
実際にスクリプト内で使う時は process.env 経由でキーを指定してやれば良い。
console.log(process.env.KEY1); // hoge
いいね、これは便利。
process.env の挙動もそのままだし、入れ得まである。