目前我正在使用真正的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);
});
这不会延迟文件的呈现,如何确保在重新发送文件时有延迟?
答案 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
所特有的选项(例如delay
或queue
)。
如果您需要延迟特定于事件的监视任务,请改为使用events
选项进行设置:
gulp.watch( globs, { events: ["add", "change"], delay: 500 }, taskFunction );
event
选项目前缺少in the Gulp 4 docs,但您可以在documentation of glob-watcher
(提供监视功能的组件)中找到它。