gulpで実行順序を指定する

gulpは非同期実行なので、デフォルトだと
すべてのタスクが同時に動く。だから早い...。
が、だいたいバッチの処理は処理の順番というものがあるので、
単一のタスク(だったらタスクランナー使う意味がない)でもなければ、
処理の順番の指定というのが必要になる。

gulpでの処理の順番の指定方法は、一番最後の処理タスク(default)から順番に
そのタスクを実行する前に必要となるタスクを設定する方式なので、
タスクの後ろから指定する形になる。ちょっとわかりづらい。

runSequenceを導入すると、これをすっきり書けるが、
gulpの書き方が変わったり、
⇒ 各タスク毎にreturnが必要
⇒runSequenceの定義のfunctionにはfunction(callback)が必要
またタスクの最後にcallbackの入れ忘れ注意

また、returnを入れたことによって挙動が異なって動かなくなるので注意。
例えば、gulpのみで順序した場合には発生しないが、各タスクでreturnを設定したことにより
標準出力でそれなりにデータが出力されているとエラーが発生することがある。
gulp-exeで標準出力がそれなりに出力されている場合など

また、

  • こういった処理の場合はいいが
 A
 ↓
B C
 ↓
  D
  • こういった処理の場合は遅くなることがある。
A B
↓ ↓
C ↓
 ↓
  D

こういった場合も,gulp本体で順番を指定した方がよい