目前我正在使用真正的 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)
这不会延迟文件的渲染,我如何确保在渲染文件时有延迟?
在 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(例如delay或queue)的选项。
如果您需要延迟特定于事件的监视任务,请events改为使用以下选项进行设置:
gulp.watch( globs, { events: ["add", "change"], delay: 500 }, taskFunction );
Run Code Online (Sandbox Code Playgroud)
Gulp 4 文档中event目前缺少该选项,但您可以在提供监视功能的组件的文档中glob-watcher找到它。