2017-02-02 10 views
1

開発中に複数のJavaScriptファイルを複数のバンドルにバンドルするためのgulpfileを設定しています。gulp-tapの親ストリームにイベントを送信する方法

ファイルの1つにエラー(構文または何か)がある場合、このプロセスを監視して終了しないので、親ストリームにendイベントを正しく送信する必要があります。

複数のファイルを処理するために、approach described in the gulp recipesを使用しています。

しかしこれを使用してdocs on 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()コールにコールバックを渡す場合、私は、エラーを見ることができますが、私はそれを取り戻すためにどのようにわずかな手掛かりを持っていません親ストリームに追加します。

答えて

1

私はこのようにそれを行うために管理:

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 
}); 
関連する問題