延迟 gulp 观看

Delay in gulp watch

目前我正在工作 ftp 和 运行 gulp 在服务器上观看,现在的问题是当我的 gulp 手表正在检测更改文件时尚未准备好上传,所以我的 gulp 手表需要延迟。

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);
});

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

Gulp-wait 看起来对你有用。将其插入您的三个任务的顶部。

gulp.task('watch', function() {
   gulp.watch(config.js.app.pathIn + '/**/*.js', setTimeout(function() {
     gulp.start('scss')
  }, 3000)
});
如果您需要 setTimeout 方法,

以上 可能 有效,但它使用 gulp.start - 将从 gulp4.0 中删除。如果您使用 gulp4 并且只是在此处对您的任务而不是对 gulp.start 进行函数调用,就会容易得多。

但我建议gulp-等等。

在 Gulp 4 中,gulp.watch 接受一个选项对象,其中可以 define a delay:

gulp.watch( someGlob, { delay: 500 }, someTask );

细则:

延迟仅适用于作为参数传递给 gulp.watch 的任务函数。它确实对在 gulp.watch 的 return 值上设置的事件处理程序有任何影响。换句话说,在

的选项中设置 delay
gulp.watch( globs, options, taskFunction );

有效,但是

let watcher = gulp.watch( globs, options ); 
watcher.on( "change", callback );

忽略 options.delay

那是因为 gulp.watch return 是 chokidar 的一个实例,它不知道 gulp.watch 特定的选项(例如 delayqueue).

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

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

目前缺少 event 选项 in the Gulp 4 docs but you'll find it in the documentation of glob-watcher,提供监视功能的组件。