2017-05-28
展开全部
抱歉所有的例子都Coffee写的,在知乎小框框里用Coffee比JS更简短清晰。我猜想所谓“优雅”的处理有两方面的含义:1.如果Pipeline出现异常,那么首先需要报错。2.在一条Pipeline上,可以集中处理多个Plugins可能抛出的异常。第一个问题好,只要有类似的`.on'error',gutil.log`这样的hook就可以处理。如果没有任何errorhook存在,Node就会throwexception,而Gulp缺省也会退出(这不是问题,很正常的设计)。不过,如果仅仅是加Hook,其实首尾还没那么干净。最好的写法是:handleError=(err)->util.logerr@end()#不写这句,gulp.watch不会继续处理由于后续文件更新触发的taskgulp.src'coffee/**/*.coffee'.pipecoffeebare:true.on'error',(err)->handleError.call@,err#@相当于js的this.可是,如果整个pipeline上有多个plugins,那么势必写成:gulp.src'coffee/**/*.coffee'.pipeprefixes'#Copyright2014(C)Aswesomecompany'.on'error',handleError.pipecoffeebare:true.on'error',handleError.pipegulp.dest'js/'这就不优雅了。好在早有人解决了这个问题,用[gulp-plumber](floatdrop/gulp-plumber:FixingNodepipes),你可以写成这样:gulp.src'./src/*.coffee'.pipeplumber().pipeprefixer'#Nicecodehere!'.pipecoffee().pipegulp.dest('./dist/')通过为plumbererrorHandler,你可以使用自己的异常处理函数。你也可以通过`plumber.stop`,让整个pipeline恢复到缺省模式。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询