Supercharging your Gruntfileで紹介されていたプラグインをいくつか試してみたのです。
load-grunt-config (+ load-grunt-tasks)
Gruntfileに書く、各プラグインの記述を別ファイルに分割できるプラグイン。(と、loadNpmTasksを自動で検索・実行してくれるプラグインを内包している)
ディレクトリ構造とか試した設定などは以下のような感じ。grunt/
以下のファイルは、jsかcoffeeもしくはyamlで書けるみたい。yamlならクォートで囲まなくて尚更、記述が楽かも。
|-- Gruntfile.coffee
|-- package.json
|-- coffee/
|-- jade/
|-- grunt/
|-- aliases.coffee
|-- coffee.coffee
|-- jade.coffee
module.exports = (grunt) -> require('load-grunt-config') grunt
{
"private": true,
"devDependencies": {
"grunt": "*",
"grunt-contrib-coffee": "*",
"grunt-contrib-jade": "*",
"load-grunt-config": "*"
}
}
module.exports =
default: [
'jade'
'coffee'
]
module.exports =
compile:
files: [
expand: true
ext: '.js'
src: 'coffee/*.coffee'
]
options:
bare: true
sourceMap: true
module.exports =
compile:
files: [
expand: true
ext: '.html'
src: 'jade/*.jade'
]
options:
pretty: true
これでGruntfile.coffee
のディレクトリに居るときに、$ grunt
をすればjade/
にあるjadeのファイルとcoffee/
にあるcoffeescriptのファイルがコンパイルされる。
loadNpmTasks
を書かなくて良くなった事と、設定が分散して書けるようになったからそれぞれの設定ファイルが見やすくなったことが利点かな。
grunt-newer
最後に成功したビルドのファイルを返してくれるプラグイン?
$ npm install --save-dev grunt-newer
module.exports =
default: [
'newer:jade'
'newer:coffee'
]
に変更して、わざとコンパイルに失敗するcoffeescript書いたけどよくわからない……
grunt-concurrent
タスクを並列実行してくれるプラグイン。
$ npm install --save-dev grunt-concurrent
module.exports =
default: [
'concurrent:first'
]
module.exports =
first: [
'jade'
'coffee'
]
これで実行したら並列実行……してくれたみたいです。ファイル数多くしたり、ファイルサイズ大きくしたりしてないのでわかんないけど……
first
というタスクにjade
とcoffee
のタスクを書いているので、これらがそれぞれ並列で動作するみたい。second
というタスクを書いて、aliases.coffee
に追加すれば何かのタスクを並列実行したあとに別のタスクを実行するということもできるので、順を追って何かをする必要がある時にはそういう書き方もできるみたい。
time-grunt
とgrunt-notify
も使わなかったけど、これはこれであると便利かなーと思った。time-grunt
はあまり使わなそうな気はするけど。