0

特にこの部分に関する BrowserSync + Gulp ページにあるこの例を検討してください。Browser Reloading

// use default task to launch BrowserSync and watch JS files
gulp.task('default', ['browser-sync'], function () {

    // add browserSync.reload to the tasks array to make
    // all browsers reload after tasks are complete.
    gulp.watch("js/*.js", ['js', browserSync.reload]);
});

タスクの依存関係が非同期で実行されるため (ここでは、jsおよび browserSync.reload)、jsタスクの前にリロードが終了することはありませんか?

4

1 に答える 1

1

はい、ドキュメントによると、その可能性があります。

その同じページから...

 (make sure you return the stream from your tasks to ensure the browser is reloaded at the correct time)

非同期タスクの場合、起動するだけで何も返されず、ウォッチャーは更新することを知りません。または、プロセスが完了する前にリロードする場合があります。

これを回避するには、タスクにコールバックを追加する必要があります。

gulp.task('somename', function() {
  var stream = gulp.src('client/**/*.js')
    .pipe(minify())
    .pipe(gulp.dest('build'));
  return stream;
});

ストリームを返すだけで、Gulp が何が起きているかを知ることができます。次に、必要なタスクのウォッチを設定します。

gulp.task('default', ['browser-sync'], function () {
  // Watched tasks are run in parallel, not in series.
  gulp.watch(['*.js'], ['somename', browserSync.reload]);
});

これはすべてドキュメントに含まれています:

https://github.com/gulpjs/gulp/blob/master/docs/API.md#async-task-support

于 2015-02-04T23:36:48.740 に答える