2017-12-11 8 views
0

私はprodビルド関連の活動のために私のプロジェクトでgulpを使用しています。私は、タスクのいずれかが、私はコンソールでエラーを取得する失敗したときに、 エラーが発生したときにgulpがGulpプロセスを停止しています

gulp.task('bundle-libs', bundlelibs); 
gulp.task('bundle-modules', bundle); 

/* build libs for production */ 
gulp.task('build:prod', function (done) { 
    runSequence('clean', ['styles', 'copy-assets'], 'compile', 'systemjs_config', 'prefix_routes', 'bundle-libs', done) 
}); 

/* create module bundles */ 
gulp.task('bundle', function (done) { 
    runSequence('copy-required-files', 'bundle-modules', done); 
}); 

しかし、これで

を次のようなタスクを持っていますが、ビルドプロセスは継続します。私がしたいことは、タスクが失敗したときに、コンソールに適切なエラーを表示してビルドプロセスを停止したい、つまり後続のタスクを実行したくないということです。これについてどうやって行くの?私はオンラインで検索したが、問題を解決できるものは得られなかった。助けてください。ありがとうございました。

答えて

1

これは、処理しようとしているエラーのタイプによって異なります。あなたがtry-catchを使ってそれを扱うことができる例外としてスローされました。それはcatchブロックに入り、残りのタスクを実行したくない場合はdone関数を実行しません。例:

function testTask(done) { 
    try { 
    return gulp.src('tmp/dist/*.html') 
      .pipe(gulp.dest('tmp/dist')); 
    } catch(error) { 
    const error_message = 'Error:: task failed. ' + error.name + ' : ' + error.message; 
    } 
} 

エラーコールバックの場合は、それらを処理する方法が多数あります。各タスクでこれを実行すると、gulp plumber

+0

を試すことができますか? n個の関数がある場合、それらの関数を一緒に扱う方法はありますか? –

+0

はい、あなたはエラーを捕まえてコールバックを実行するときまでに、別のタスクを開始することができます。これは私がそれをやろうとしていたときに起こっていたものです。コールバック前に私は時間がかかっていた非同期呼び出しを持っていたからです。 –

関連する問題