はじめに
とあることで、gulpを3.x.x.
から^4.0.0
にあげる必要がありました。
あげてからgulpタスクを実行すると
以下のようなエラーが出たのでその対応方法をメモ
# defaultタスクを実行するとこんなエラーが... $ ./node_modules/gulp/bin/gulp.js assert.js:42 throw new errors.AssertionError({ ^ AssertionError [ERR_ASSERTION]: Task function must be specified at Gulp.set [as _setTask] (/Users/tweeeety/gulp-task-gulp4.0.0-sample1/node_modules/undertaker/lib/set-task.js:10:3) at Gulp.task (/Users/tweeeety/gulp-task-gulp4.0.0-sample1/node_modules/undertaker/lib/task.js:13:8) at Object.<anonymous> (/Users/tweeeety/gulp-task-gulp4.0.0-sample1/gulpfile.js:5:6) at Module._compile (module.js:652:30) at Object.Module._extensions..js (module.js:663:10) at Module.load (module.js:565:32) at tryModuleLoad (module.js:505:12) at Function.Module._load (module.js:497:3) at Module.require (module.js:596:17) at require (internal/module.js:11:18)
なぜ起こったか
removed 3 argument syntax for gulp.task
gulp changelog
github/gulpのchangelogから抜粋ですが、
3.x.x
のときのgulp.task
は引数が3つでしたが、
^4.0.0
ではgulp.task
の引数が2つになりました。
これによるエラーのようです。
どうすればいいか
gulp.task@3.x.x
-> gulp.task@^4.x.x
に書き換える変える一例をあげます。
gulp.task@3.x.x
gulp.task('hoge', 'fuga', function() { console.log('callbackの関数'); });
gulp.task@^4.x.x
// 引数は2つに gulp.task('hoge', gulp.series('fuga', function(callback) { console.log('callbackの関数'); // callback or streamを返さなければならない callback(); }));
補足
例はgulp.series
で書きましたが
直列にしたいか、並列にしたいかで
- gulp.series
- 直列にしたいタスクを定義
- gulp.parallel
- 並列にしたいタスクを定義
を適宜読み替えてください。
参考サイトを載せておきます。
3.9.1
と^4.x.x
を実際に動かして見比べてみる
そのまま試せる形でgithubに載せてみました。
https://github.com/tweeeety/gulp-task-gulp4.0.0-sample1
- gulp@3.x.xの書き方
- gulp@^4.x.xの書き方
をそれぞれ記載しています。
補足
上記のコード例を実行すると
微妙にtaskの呼び出しに変化があります。
Starting 'default'
とStarting 'task2'
あたりの順番が違います。
今回の例でいうと
両者は実質タスク名なだけで中身は何もしてないので影響はないですが
念のため注意が必要そうです。
3.9.1
の例
$ ./node_modules/gulp/bin/gulp.js [00:26:33] Using gulpfile ~/gitrepos/hatena/gulp-task-gulp4.0.0-sample1/gulpfile.js [00:26:33] Starting 'task1'... i am task1!! [00:26:33] Finished 'task1' after 138 μs [00:26:33] Starting 'task2-1'... i am task2-1!! [00:26:33] Finished 'task2-1' after 65 μs [00:26:33] Starting 'task2-2'... i am task2-2!! [00:26:33] Finished 'task2-2' after 82 μs [00:26:33] Starting 'task2'... i am task2!! [00:26:33] Finished 'task2' after 77 μs [00:26:33] Starting 'task3'... i am task3!! [00:26:33] Finished 'task3' after 75 μs [00:26:33] Starting 'default'... [00:26:33] Finished 'default' after 19 μs [~/gitrepos/hatena/gulp-task-gulp4.0.0-sample1 00:26:3
^4.x.x
の例
$ ./node_modules/gulp/bin/gulp.js [00:31:37] Using gulpfile ~/gitrepos/hatena/gulp-task-gulp4.0.0-sample1/gulpfile.js [00:31:37] Starting 'default'... [00:31:37] Starting 'task1'... i am task1!! [00:31:37] Finished 'task1' after 878 μs [00:31:37] Starting 'task2'... [00:31:37] Starting 'task2-1'... [00:31:37] Starting '<anonymous>'... i am task2-1!! [00:31:37] Finished '<anonymous>' after 247 μs [00:31:37] Finished 'task2-1' after 481 μs [00:31:37] Starting 'task2-2'... i am task2-2!! [00:31:37] Finished 'task2-2' after 240 μs [00:31:37] Starting '<anonymous>'... i am task2!! [00:31:37] Finished '<anonymous>' after 219 μs [00:31:37] Finished 'task2' after 1.4 ms [00:31:37] Starting 'task3'... i am task3!! [00:31:37] Finished 'task3' after 174 μs [00:31:37] Finished 'default' after 5.27 ms
こちらも
こちらも合わせてご覧ください
おわり
gulpを3.x.x
->4.x.x
からあげる場合は
書き直しになる場合が多いかもしれないので要注意
\(^o^)/