gulpでwatchしたときにウォッチ中のタスクでコンパイルエラーになってしまうと、それ以後にウォッチされなくなるので困っていましたが、とりあえず対処法がわかったのでメモしておきます。
GitHubにIssueが上がっていました。
CoffeeScriptだと関数の最後の式に自動でreturn
を暗黙で付けてしまうのが原因です。なので、gulpfile.coffeeな人だけが発生する問題です。
対処方法としては、次のように、最後に明示的なreturn
を足してやればよいです。
gulp.task 'stylus', -> gulp.src '**/*.styl' .pipe (stylus {bare: true}) .on 'error', log .pipe cond isRelease, minifyCss() .pipe (gulp.dest 'css') .pipe (livereload server) return
return
がない場合はパイプされたストリーム経由でエラーが返されてしまうっぽいです (まだソースをあまり見ていないので半分くらい想像です)。
gulp-utilのlog
ではなく自作log関数をつくったほうがよさげ
また、エラー時にgulp-utilのlog
を使っていましたが、エラー報告が見づらいことに気づきました。
gulpプラグインのエラーはname
とmessage
があることが多いので、自分でログ関数を作りました。
log = (err) -> if err.name? and err.message #console.log chalk.white.bgRed.bold '[ERROR] ' + err.name console.log '[ERROR]', err.name console.log err.message else if typeof err == 'object' for k, v of err console.log k, v else console.log err.toString()
そのときの出力例はこんな感じ。chalkを入れて色をつけるとちょっと見やすくなりました。
0 件のコメント:
コメントを投稿
注: コメントを投稿できるのは、このブログのメンバーだけです。