npm install config --save
ってやるとconfigモジュールがインストールされる。
これは./configディレクトリ以下のファイルを読むので、そこに各環境ごとに必要な設定ファイルをyamlなどで書いておく。
Gruntfile.coffee
module.exports = (grunt) =>
beforeEnv = (cmd)->
return (env) ->
if env?
command = 'NODE_ENV='+env+' '+cmd
else
command = cmd
console.log "exec : ", command, "\n"
return command
grunt.initConfig
pkg: grunt.file.readJSON('package.json')
exec:
hoge:
cmd: beforeEnv('node dest/main.js -arg huga')
stdout: true
grunt.loadNpmTasks('grunt-exec')
main.coffee
config = require('config')
console.log "main.js config : ", JSON.stringify(config), "\n"
console.log process.env.NODE_ENV
以上のようなファイルを書いておくと、
grunt exec:hoge:myenv
と実行した時、
NODE_ENV=myenv node dest/main.js -arg huga
というコマンドが実行されて
config/myenv.yaml
が読み込まれる。
これをつかえば設定をちょっとだけ変えたコマンドを実行したい時に、
cp config/myenv.yaml config/yourenv.yaml
したあと編集して
grunt exec:hoge:yourenv
とすれば簡単に読み込む設定ファイルが変えられる。
NODE_ENVにこんな風に好き勝手な文字列を設定していいものなのかはよくわからないが、
マズかったらconfigファイル名を引数に応じて指定するようなコマンドにすればよさそう。