不确定 BrowserSync 主页上给出的示例

Unsure about example given on BrowserSync homepage

考虑 BrowserSync + Gulp 页面上关于 Browser Reloadingexample,尤其是这一部分:

// 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 任务之前完成吗?

是的,根据文档,这是有可能的。

关闭同一页面...

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

如果它是一个异步任务,它只会触发而不是 return 任何东西,观察者将不知道要刷新。或者它可能会在该过程完成之前重新加载。

要解决这个问题,您应该为您的任务添加回调。

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

只是 return 流所以 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