繁体   English   中英

如何将事件发送到 gulp-tap 的父流中

[英]How do I emit an event into gulp-tap's parent stream

我正在设置一个 gulpfile,用于在开发过程中将多个 JavaScript 文件捆绑到多个包中。

由于我想观看此过程,并且如果其中一个文件中出现错误(语法或其他错误),则不让它退出,因此我需要向父流正确发出end事件。

为了处理多个文件,我使用了 gulp recipes 中描述方法

但是使用它并阅读gulp-tap 上文档我不确定如何让它将错误发送到父流中。

我正在尝试做的是以下内容:

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
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM