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 件のコメント:
コメントを投稿
注: コメントを投稿できるのは、このブログのメンバーだけです。