吞咽手表延迟

时间:2017-06-07 12:21:26

标签: gulp gulp-watch

目前我正在使用真正的ftp并在te服务器上运行gulp watch,现在的问题是当我的gulp watch检测到更改时文件还没有准备好上传,所以我需要延迟我的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);
});

这不会延迟文件的呈现,如何确保在重新发送文件时有延迟?

2 个答案:

答案 0 :(得分:2)

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-wait。

答案 1 :(得分:2)

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

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

精美印刷品

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

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

可以,但是

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

忽略options.delay

这是因为gulp.watch返回chokidar的一个实例,该实例不知道gulp.watch所特有的选项(例如delayqueue )。

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

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

event选项目前缺少in the Gulp 4 docs,但您可以在documentation of glob-watcher(提供监视功能的组件)中找到它。