8

私は Gulp の多くのストリームに入り込んでおり、交絡する主題に出くわしました。すべてのタスクが実際に完了したら、通知を投稿したいと思います。タスクは実行されていますが、デフォルトでは非同期で実行されています。

各ステップが完了した後...そして最後にすべてのステップが完了したときに通知を表示したい場合はどうすればよいですか?

gulp でタスクのタイミングをより細かく制御するための最良の方法は何ですか?

現在、gulp-notify を使用して通知を表示しています。

更新 X 2

実際にはエラーは発生していませんが、ここでの操作の順序と、すべてのタスクが完了したときに独自の通知をトリガーする方法をよりよく理解したいと思います. これが例です。

var gulp = require('gulp'),
    gp_concat = require('gulp-concat'),
    gp_notify = require('gulp-notify');

gulp.task('task1', function() {
    return gulp.src(['file1.js','file2.js'])
        .pipe(gp_concat('file1_2.js')
        .pipe(gp_notify({ message: "file1_2 created." }
})

gulp.task('task2', function() {
    return gulp.src(['file3.js','file4.js'])
        .pipe(gp_concat('file3_4.js')
        .pipe(gp_notify({ message: "file3_4 created." }
})

gulp.task('mainTask', ['task1','task2'], function() {
    gulp.src('file*_*.js')
        .pipe(gp_notify({ message: "All tasks complete." }))
});

コンソールでは、通知のタイミングが正しくなりましたが、実行の最後に、'mainTask' が xx ミリ秒後に終了する直前に、最後の 'すべてのタスクが完了しました' というメッセージが [n-1] 回発生します。ここで、n はカウントです。サブタスクの。

この最終通知が何度もトリガーされる原因と、それを抑制する方法を教えてください。

4

2 に答える 2

9

デフォルトでgulp-notifyは、ストリーム内のファイルごとに通知を送信します。ストリームごとに 1 つの通知のみが必要な場合は、 にonLast: true渡されるオプションに追加しますnotify()。例えば

var gulp = require('gulp'),
    gp_concat = require('gulp-concat'),
    gp_notify = require('gulp-notify');

gulp.task('task1', function() {
    return gulp.src(['file1.js','file2.js'])
        .pipe(gp_concat('file1_2.js'))
        .pipe(gp_notify({ message: "file1_2 created.", onLast: true }));
});

gulp.task('task2', function() {
    return gulp.src(['file3.js','file4.js'])
        .pipe(gp_concat('file3_4.js'))
        .pipe(gp_notify({ message: "file3_4 created.", onLast: true }));
});

gulp.task('mainTask', ['task1','task2'], function() {
    gulp.src('file*_*.js')
        .pipe(gp_notify({ message: "All tasks complete.", onLast: true }));
});
于 2014-11-02T15:35:51.853 に答える