いくつかの方法があるようですが、標準機能で事足りるようです。
参考
大変参考になりました。
基本
expressはapp.get('env')で環境(NODE_ENVの内容)が取得できる。
下記のようなexpressを利用するjsを書いて実行します。
app.js
var express = require('express');
var app = express();
//環境を表示
console.log(app.get('env'));
標準ではdevelopmentが返る。
development
NODE_ENVの値は起動時に(も)設定できる
起動時コマンドの頭につけると読み込まれる。
$ NODE_ENV=production node app.js
production
設定ファイルを用意する
設定用のjson(config.json)を作成し、環境毎に値を設定する。
config.json
{
"development": {
"host": "test-server"
},
"production" : {
"host": "honban-server"
}
}
環境毎に変数を見てみる
app.js
var express = require('express');
var app = express();
//環境を表示
console.log(app.get('env'));
//configファイルから環境に応じた内容を取得
var config = require('./config.json')[app.get('env')];
//表示
console.log(config.host);
PM2を利用した場合
pm2を利用した場合は頭に環境変数を付けるという形式では動かないようです。
参考
設定ファイル
pm2用の設定ファイルをカレントに作成し、
pm2.config.json
{
"name" : "App_Name",
"script" : "./index.js",
"env": {
"NODE_ENV" : "development"
},
"env_staging": {
"NODE_ENV" : "staging"
},
"env_production": {
"NODE_ENV" : "production"
}
}
起動
設定ファイルと環境を指定して起動させます。
pm2 start pm2.config.json --env staging