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 の挙動もそのままだし、入れ得まである。

JavaScriptdotenv,Node.js

Posted by theuri