Gulp v4になってv3の書き方だとエラーになるケースがあったので移行したときのメモ
gulp.series と gulp.parallel
gulp v4で追加されたメソッド
added
gulp.series
andgulp.parallel
methods for composing tasks. Everything must use these now.
gulp.series(...tasks)
... 引数のタスクを順番に処理をする APIドキュメントgulp.parallel(...tasks)
... 引数のタスクを並列に処理をする APIドキュメント
gulp v3まではrun-sequence
で処理の順番を作っていた部分をgulp.series
とgulp.parallel
を使って書き換えることができます。
run-sequence
を使ってたとき
gulp.task('build', function(cb) { runSequence(['pug', 'css', 'js'], 'server', cb); });
👇gulp v4な書き方
gulp.task('build', gulp.series( gulp.parallel('pug', 'css', 'js'), 'server' ));
処理の順番が複雑になるとrun-sequence
の方が見通しが良いように思いますが、モジュールをインストールしなくて済む分、hugeになるnode_moduleのサイズが少し小さくなくなるかもです。(gulp4になってその分サイズが大きくなってる可能性もありそうなので...)
gulp.series
, gulp.parallel
で実際に実行されるタスクはgulp.task()
ではなく、通常の関数形式でも問題ないようです。
var task = function(done) { // TASK done(); }; gulp.task('build', gulp.series( task ));
この場合は実行される関数名を'
や"
で囲ってgulp.series("task")
のようにすると動作しませんでした。
また、ただの関数なので、コマンドラインから
$ gulp task
のように直接関数を実行することはできません。
gulp.task
gulp.taskの第二引数の依存タスクが廃止されたようです
- v3:
gulp.task(name [, deps] [, fn])
- v4:
gulp.task([name,] fn)
gulp v3の次のようなのクリプトはgulp v4で実行するとエラーになってしまいます。
gulp.task('default', ['server'], function() { // task });
👇gulp v4な書き方
gulp.task('default', gulp.series( 'server', function() { // task } ));
nameが必須ではなくなっているので、次のような書き方もできるみたいです
gulp.task(function mytask(done) { // task done(); });
gulp.watch
gulp.watchでのタスクの指定方法が変更になっていました
- v3:
gulp.watch(glob [, opts], tasks)
- v4:
gulp.watch(globs [, opts] [, fn])
gulp v3では配列でタスク名を指定していたのを、v4では関数で指定します。
gulp.watch(['*.js'], ['task']);
👇gulp v4
gulp.watch(['*.js'], gulp.task('task')); // or gulp.watch(['*.js'], gulp.series('task')); // or gulp.watch(['*.js'], gulp.parallel('task')); // or gulp.watch(['*.js'], function() { // task });
gulp v3 から gulp v4 に移行する際は、とりあえずgulp.task
とgulp.watch
の書き方を見直せば問題なく移行できるのかなと思いました。
babel
とかを利用する場合はES2015
的なgulpfileの書き方もできるようです。
参考: https://github.com/gulpjs/gulp/tree/4.0
技術情報のアップデートが出来てなくて今更ながらgulp4について調べてたら、「gulpはもう辛い。これからはnpm-script」とか言われてたみたいで情報交換が難しいちほーの端っこで個人で仕事やってると能動的に情報取りに行って置いていかれないようにしてないとあっという間に追いつけてない間に更に色々進んでしまうのは辛み。
情報のキャッチアップは社内勉強会があるような会社組織の中の方に身を置いてた時の方が断然良かったな〜って実感しました。
[参考]
- https://github.com/gulpjs/gulp/tree/4.0
- Gulp 4.0 Upgrade Guide
- gulp v4.0.0がプレリリース! 移行方法と変更点まとめ - satoyan419.com
- Hexoをgulp 4に組み込んで効率的にブログ開発する | Qookie Tech
- 帰ってきたGulp 4 - Qiita
- 最新ビルドシステムGulp 4入門 〜環境構築からタスク作成まで〜 - Qiita
Webデザイナーの仕事を楽にする! gulpではじめるWeb制作ワークフロー入門
- 作者: 中村勇希
- 出版社/メーカー: シーアンドアール研究所
- 発売日: 2018/05/29
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る
- 発売日: 2017/12/04
- メディア: Prime Video
- この商品を含むブログを見る
おバカなギャグがありつつ、こんなチームで仕事するの楽しそうだなーっておもいながら観てました。