吞咽手表延迟

Ivo*_*Ivo 1 gulp gulp-watch

目前我正在使用真正的 ftp 并在 te 服务器上运行 gulp watch,现在问题是当我的 gulp watch 检测到更改时,文件没有准备好上传,所以我需要延迟我的 gulp watch。

gulp.task('watch', function() {
  setTimeout(function() {
    gulp.watch(config.js.app.pathIn + '/**/*.js', ['js_app']);
    gulp.watch(config.js.vendor.pathIn + '/**/*.js', ['js_vendor']);
    gulp.watch(config.scss.pathIn + '/**/*.scss', ['scss']);
  }, 3000);
});
Run Code Online (Sandbox Code Playgroud)

这不会延迟文件的渲染,我如何确保在渲染文件时有延迟?

has*_*nge 8

在 Gulp 4 中,gulp.watch接受一个选项对象,它可以定义一个delay

gulp.watch( someGlob, { delay: 500 }, someTask );
Run Code Online (Sandbox Code Playgroud)

精美的印刷品:

延迟仅适用于作为参数传递给 的任务函数gulp.watch。它对设置在 的返回值上的事件处理程序有任何影响gulp.watch。换句话说,delay选项中的一组

gulp.watch( globs, options, taskFunction );
Run Code Online (Sandbox Code Playgroud)

有效,但是

let watcher = gulp.watch( globs, options ); 
watcher.on( "change", callback );
Run Code Online (Sandbox Code Playgroud)

忽略options.delay.

那是因为gulp.watch返回 的实例chokidar,它不知道特定于gulp.watch(例如delayqueue)的选项。

如果您需要延迟特定于事件的监视任务,请events改为使用以下选项进行设置:

gulp.watch( globs, { events: ["add", "change"], delay: 500 }, taskFunction );
Run Code Online (Sandbox Code Playgroud)

Gulp 4 文档中event目前缺少该选项但您可以在提供监视功能的组件的文档中glob-watcher找到它。