grunt.event.on('watch', fn)
で「watch」イベントを監視し、変更したファイルを取得することができる。
イベントハンドラでは変更ファイルのパスが取得できるので、
それを使用してconfigを書き換えて、変更ファイルのみにタスクを実行させる、ということができる。
※jshintの他にもsassやcoffeescript等のコンパイルに利用できそう。
grunt-contrib-watchのconfigでnospawn: true
にしないとイベントハンドラによるconfig書き換えが反映されない。
grunt.initConfig({
watch: {
scripts: {
files: ['lib/*.js'],
tasks: ['jshint'],
},
options: {
nospawn: true
}
},
jshint: {
all: ['lib/*.js'],
},
});
grunt.event.on('watch', function(action, filepath) {
grunt.config(['jshint', 'all'], [filepath]);
});