Node.jsのデプロイメント設定/構成ファイルを保存するには?
いくつかのNodeアプリを作っていますが、デプロイ関連の設定を保存する良いパターンを探していました。Djangoの世界(私の出身地)では、標準的な設定(タイムゾーンなど)を含むsettings.py
ファイルと、デプロイメントに特化した設定(どのデータベースと通信するか、どのmemcacheソケットを使うか、管理者のメールアドレスなど)を格納するlocal_settings.py
ファイルを用意するのが一般的です。
同じようなパターンをNodeでも探していました。ただの設定ファイルであれば、「app.js」の他の部分と一緒になってしまうことはありませんが、サーバー固有の設定をソース管理外のファイルで行う方法があることは重要だと思います。同じアプリが異なるサーバーにデプロイされ、設定が大きく異なることもあり得ますし、マージコンフリクトなどに対処するのは私の考えでは楽しいことではありません。
そのためのフレームワークやツールがあるのか、それともみんな自分で何かを作っているのか。
615
3
私は、パッケージには
package.json
を、設定にはconfig.js
を使っています。私はプロジェクトからコンフィグを読み込みます。
そして、
config.db_host
やconfig.db_port
などから自分のものにアクセスできるようにしています。 これにより、ハードコードされたパラメータや、ソースコントロールにパスワードを保存したくない場合は環境変数に保存されたパラメータを使用することができます。また、
package.json
を生成して、dependenciesセクションを挿入しています。プロジェクトを自分のローカルマシンにクローンする際には、
npm install
を実行してパッケージをインストールします。詳しくはこちらをご覧ください。プロジェクトはGitHubに保存されており、本番サーバー用にリモートを追加しています。
ずっと後になって、設定を管理するためのNode.jsのモジュールがなかなか良いことに気づきました。nconfです。
簡単な例です。
また、Redisへの設定の保存や設定ファイルの記述もサポートしており、かなり強固なAPIを備えています。また、Flatironフレームワーク構想の一環として、Node.jsの中でも特に評価の高いショップのひとつであるNodejitsuが支援しているので、かなり将来性があると言えるでしょう。
nconf at Github]nconfをチェックしてみてください。
また、$HOSTと__$NODE_ENV__の変数に応じて設定ファイルを読み込むnode-configも参考になるでしょう(RoRに少し似ています) : documentation。
これは、異なるデプロイメント設定(
development
,test
,production
)の場合に非常に便利です。