Javascript 我如何将事件发射到gulp tap';s父流
我正在设置一个gulpfile,用于在开发期间将多个JavaScript文件捆绑到多个捆绑包中 因为我想观察这个过程,如果其中一个文件中有错误(语法或其他错误),我就不想让它退出,所以我需要正确地向父流发出Javascript 我如何将事件发射到gulp tap';s父流,javascript,node.js,gulp,browserify,node-streams,Javascript,Node.js,Gulp,Browserify,Node Streams,我正在设置一个gulpfile,用于在开发期间将多个JavaScript文件捆绑到多个捆绑包中 因为我想观察这个过程,如果其中一个文件中有错误(语法或其他错误),我就不想让它退出,所以我需要正确地向父流发出end事件 用于处理我正在使用的多个文件 但是使用它并读取,我不确定如何让它将错误发送到父流中 我想做的是: gulp.task('bundle', () => ( gulp.src(['whatevs/*.js'], { read: false }) .pipe
end
事件
用于处理我正在使用的多个文件
但是使用它并读取,我不确定如何让它将错误发送到父流中
我想做的是:
gulp.task('bundle', () => (
gulp.src(['whatevs/*.js'], { read: false })
.pipe($.tap((file) => {
file.contents = browserify( // eslint-disable-line no-param-reassign
file.path,
{ debug: true, fullPaths: true }
).bundle();
}))
.on('error', function handleBrowserifyError(err) {
this.emit('end');
})
.pipe(gulp.dest('bundles/'))
));
如果我将回调传递给
bundle()
调用,我可以看到错误,但我丝毫不知道如何将其返回到父流中。我这样做:
gulp.task('bundle', () => {
const scriptStream = gulp.src(['whatevs/*.js'], { read: false })
.pipe($.tap((file) => {
file.contents = browserify( // eslint-disable-line no-param-reassign
file.path,
{ debug: true, fullPaths: true }
)
.bundle()
.on('error', () => scriptStream.emit('end'));
}))
.on('error', Function.prototype) // prevents crashing
.pipe(gulp.dest('bundles/'));
return scriptStream
});