HOWTO · Node.js
Node.js のコンフィグレーションの作成と保存
このチュートリアルでは、Node.js で構成を作成して保存する方法を示します。
このページの内容
設定を一元管理すると、ポート番号やデータベースのホスト名などをアプリケーションのロジックから分離できます。npm パッケージの config は Node.js アプリの設定を読み込み、コードからそれらの値をまとめて参照できるようにします。まずデフォルト設定ファイルを用意し、開発・テスト・ステージング・本番環境で異なる値が必要になったら、環境別のファイルを追加します。以下の例では JSON を使い、Express は必要ありません。
node-config をインストールして Node.js の設定を作成・保存する
プロジェクトのディレクトリで、npm install config を実行して npm パッケージ config をインストールします。npm は依存関係を package.json に記録するため、別の環境にプロジェクトをインストールしたときも利用できます。パッケージ名は config です。node-config はよく使われる略称ですが、npm に指定する名前ではありません。
アプリ全体で使う値を config/default.json に記述します。JSON では、プロパティ名と文字列値を二重引用符で囲む必要があります。たとえば、ファイルには {"server":{"port":3000},"db":{"host":"localhost","port":27017,"name":"mongodb"}} と記述できます。ソース管理にコミットするファイルには秘密情報を含めないでください。認証情報はデプロイ環境から渡すか、シークレット管理サービスを使って注入します。
次の例を実行します。
const defaults = {
server: { port: 3000 },
db: { host: "localhost", port: 27017, name: "mongodb" }
};
console.log(defaults.server.port, defaults.db.host);
3000 localhost
この単独の JavaScript 例は正常に完了し、出力として 3000 localhost が表示されます。アプリでは const config = require("config") でパッケージを読み込み、config.get("server.port") で値を取得します。db.host も同じ方法で参照できます。上のコード例ではプロパティへのパスを分かりやすく示すために JavaScript オブジェクトを使っていますが、設定ファイル自体は JSON です。
環境別に設定するには、たとえば config/production.json を追加し、デフォルトから変更する値だけを記述します。アプリの起動時に NODE_ENV を設定して、デプロイ先の環境を指定します。NODE_CONFIG は設定の上書きに使う、このパッケージの環境変数です。インストール済みバージョンでの NODE_CONFIG の正確な構文は公式の環境変数ガイドを、ファイルの読み込み優先順位は公式の設定ファイルガイドを参照してください。
各 .json ファイルで有効な JSON を使い、設定ファイルの形式を統一します。上記のファイル名や値は例なので、アプリの設定に合わせて変更してください。YAML、JSON5、HJSON のサポートはパッケージのバージョンや設定によって異なる場合があるため、これらの形式を使う前に対応状況を確認してください。基本的な構成に必要なのは、package.json、config/default.json、そして config.get で設定値を読み取るアプリケーションコードです。