前回、gruntを使って監視してcoffeescirptをコンパイルというエントリーを書きました。
で、それから複数フォルダを監視して、coffeescirptをコンパイルするにはどうすればいいか調査しました。
状況としては、testフォルダの中に、test1フォルダとtest2フォルダがあり、それぞれのフォルダの中に入っているcoffeescirptを監視し、変更があった場合、コンパイルするという流れです。
まずは、以下のようにGruntfile.coffeeを組みました。
module.exports = (grunt)->
grunt.initConfig
pkg : grunt.file.readJSON 'package.json'
watch :
files : ["./test1/*.coffee","./test2/*.coffee"]
tasks : "coffee"
coffee :
compile :
files : [
expand : true
cwd : "./"
src : ['test1/*.coffee','test2/*.coffee']
dest : "./src/"
ext : ".js"
]
directories:[]
grunt.loadNpmTasks 'grunt-contrib-coffee'
grunt.loadNpmTasks 'grunt-contrib-watch'
grunt.registerTask 'default', ['watch']
returnただ、これだと、片方のプログラムに修正があった場合、両方フォルダの中にあるファイルを強制的にコンパイルするため、フォルダが増えた場合、時間がかかってしまう。そこで、下記のように組み直した結果、独立してコンパイルすることができた。
module.exports = (grunt)->
grunt.initConfig
pkg : grunt.file.readJSON 'package.json'
watch :
coffee_test1:
files : "test1/*.coffee"
tasks : "coffee:test1"
coffee_test2:
files : "test2/*.coffee"
tasks : "coffee:test2"
coffee :
test1:
#compile :
files : [
expand : true
cwd : "./test1"
src : "*.coffee"
dest : "./test1/src/"
ext : ".js"
]
test2:
#compile :
files : [
expand : true
cwd : "./test2"
src : '*.coffee'
dest : "./test2/src/"
ext : ".js"
]
grunt.loadNpmTasks 'grunt-contrib-coffee'
grunt.loadNpmTasks 'grunt-contrib-watch'
grunt.registerTask 'default', ['watch']
returnでも、これって、フォルダが増える度に、ツラツラ書かなくちゃーいけないのかなー。めんどくせーなー。
参考
GruntでCoffeeScriptを自動コンパイルするコピペ
0 コメント:
コメントを投稿