もっと賢いやり方がありそうですが
##やりたいこと
-
Gruntfile
を修正する度にgrunt
コマンド止めてgrunt
とやってるのが面倒になってきた -
node-dev app.js
みたいなのをgrunt
コマンドでもやりたい
##やりかた
-
node-dev
やnodemon
にgrunt
コマンドファイル(中身はjs)のパスを渡せばOK -
which grunt
の戻り値を渡せばOK
##例
-
nodemon
使う - ここで使ってる
Gruntfile.coffee
の抜粋
grunt.loadNpmTasks "grunt-koko"
grunt.loadNpmTasks "grunt-contrib-jade"
grunt.loadNpmTasks "grunt-contrib-coffee"
grunt.loadNpmTasks "grunt-contrib-watch"
grunt.loadNpmTasks "grunt-contrib-uglify"
grunt.loadNpmTasks "grunt-contrib-concat"
grunt.loadNpmTasks "grunt-contrib-clean"
grunt.loadNpmTasks "grunt-contrib-connect"
grunt.loadNpmTasks "grunt-contrib-cssmin"
# resigster
grunt.registerTask "default", [ "connect","watch"]
###nodemon
-
Gruntfile
のあるディレクトリで以下のnodemon
コマンド実行
nodemon "$(which grunt)"
-
"$(which grunt)"
の部分は展開されて、次のように実行したのと同じになる
nodemon $HOME/nvm/v0.10.2/lib/node_modules/grunt-cli/bin/grunt`
- 自分のは
nvm
使ってて、ver.が少し古いv0.10.2
使ってるからこんな風なパスになる
一応動きこんな感じにterminalに出力される
$ nodemon /Users/akymrk/nvm/v0.10.2/lib/node_modules/grunt-cli/bin/grunt
20 Sep 18:47:27 - [nodemon] v0.7.10
20 Sep 18:47:27 - [nodemon] to restart at any time, enter `rs`
20 Sep 18:47:27 - [nodemon] watching: /Users/akymrk/sample
20 Sep 18:47:27 - [nodemon] starting `node /Users/akymrk/nvm/v0.10.2/lib/node_modules/grunt-cli/bin/grunt`
Running "connect:livereload" (connect) task
Started connect web server on localhost:9001.
Running "watch" task
Waiting...20 Sep 18:48:11 - [nodemon] restarting due to changes...
20 Sep 18:48:11 - [nodemon] /Users/akymrk/sample/Gruntfile.coffee
20 Sep 18:48:11 - [nodemon] starting `node /Users/akymrk/nvm/v0.10.2/lib/node_modules/grunt-cli/bin/grunt`
Running "connect:livereload" (connect) task
Started connect web server on localhost:9001.
Running "watch" task
Waiting...20 Sep 18:49:07 - [nodemon] restarting due to changes...
20 Sep 18:49:07 - [nodemon] /Users/akymrk/sample/Gruntfile.coffee
20 Sep 18:49:07 - [nodemon] starting `node /Users/akymrk/nvm/v0.10.2/lib/node_modules/grunt-cli/bin/grunt`
Running "connect:livereload" (connect) task
Started connect web server on localhost:9002.
Running "watch" task
Waiting...20 Sep 18:49:13 - [nodemon] restarting due to changes...
20 Sep 18:49:13 - [nodemon] /Users/akymrk/sample/Gruntfile.coffee
-
nodemon
はGruntfile.coffee
の修正を検知すると、grunt
コマンドを停止・再開してくれる
##nodemon
が更新を監視してるファイル
- カレントディレクトリの
.js
ファイルと.coffee
ファイル-
Gruntfile.coffee
以外にも.js
、.coffee
がカレントディレクトリにあれば、そのファイルの更新も再起動のトリガーになる - これがデフォルト実行時の監視対象
- 同じディレクトリに普通置かれてる
package.json
の更新は検知しない
-
##package.json
が更新されたときも'nodemon'使ってリスタートしたい
- 使ってるプラグインのアップデートして
npm
の--save-dev
してpackage.json
が更新されたときとか -
Gruntfile.js
でのみ有効 -
Gruntfile.coffee
だとNG -
nodemon
の-e
オプションで監視するカレントディレクトリのファイル拡張子を渡す
nodemon -e js,json "$(which grunt)"
##nodemon
使うとgrunt
のlivereloadが正常に動かない
-
.coffee
ファイル修正したときは、動かず、.css
や.jade
編集したときは動いた -
.nodemonignore
ファイルに、nodemonによる監視を無視するファイル、ディレクトリを書いたらOKだった
# .nodemonignoreの例
/css/*
/jade/*
/coffee/*
/js/*
.git/*
##grunt dev
とかオプション渡したいとき
nodemon "$(which grunt)" dev
という風に足せば動いた
##node-dev
でもやり方同じ
node-dev "$(which grunt)" default