gulp-使用stream-combiner2整合 streams 来处理错误

默认情况下,在 stream 中发生一个错误的话,它会被直接抛出,除非已经有一个时间监听器监听着 error 时间。 这在处理一个比较长的管道操作的时候会显得比较棘手。

通过使用 stream-combiner2,你可以将一系列的 stream 合并成一个,这意味着,你只需要在你的代码中一个地方添加监听器监听 error 时间就可以了。

安装

npm install --save-dev stream-combiner2

流合并方式监控错误: http://www.gulpjs.com.cn/docs/recipes/combining-streams-to-handle-errors/

这里是参考上面gulp官网中的例子进行测试。


   
   
1
2
3
4
5
6
7
8
9
10
11
var  gulp  =  require ( 'gulp' ) ;
var  uglify  =  require ( 'gulp-uglify' ) ;
gulp . task ( 'test' , function ( ) {
     //binary js
     gulp . src ( 'src/*.js' )
         . pipe ( uglify ( ))
         . pipe ( gulp . dest ( 'dest' )) ;
}) ;


我这里故意将src目录下的test,js测试文件写错:

   
   
1
2
3
4
function  a ( ) {
     return 11 ture ;
}
a ( ) ;


然后git bash运行 gulp test,运行结果如下图:
gulp修行之【stream-combiner2】

是不是瞬间不想活了,反正我看起来是一脸的懵逼。。。

然而这一切在有了stream-combiner2之后,就完全不一样了。

这是使用stream-combiner2的代码,绑定了默认任务,省的麻烦每次都还要写gulp test :


   
   
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
var  gulp  =  require ( 'gulp' ) ;
var  combiner  =  require ( 'stream-combiner2' ) ;
var  uglify  =  require ( 'gulp-uglify' ) ;
gulp . task ( 'test' , function ( ) {
     // js
     var  combined  =  combiner . obj ([
         gulp . src ( 'src/*.js' ) ,
         uglify ( ) ,
         gulp . dest ( 'dest' )
     ]) ;
     //
     combined . on ( 'error' , console . error . bind ( console )) ;
     return  combined ;
}) ;
gulp . task ( 'default' , [ 'test' ]) ;


执行gulp输出结果如下图:

gulp修行之【stream-combiner2】

它会把错误的信息、文件名、行数、列数·、位置、是执行哪个插件出现的错误,错误文件的路径,错误时间等等详细的信息都列出来。

不仅如此,大家有没有发现一个小细节,就是使用了stream-combiner2的方式,在执行uglify的时候没有通过管道。

这里我也很奇怪,gulp不是通过binary pipe方式执行的么,这里为什么不需要通过管道了呢?

看了github上的文档才知道,它会把pipe管道转换成stream流的形式。
gulp修行之【stream-combiner2】

这样的话,每次都使用stream-combiner2的方式,用combiner.obj([执行内容]);的方式,就不用每一个步骤都建立管道再走管道了,

转自:http://www.qdfuns.com/notes/33133/0737f1319260aedfcc62efba84d2c4bf.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值