【发布时间】:2020-01-03 02:12:54
【问题描述】:
我有一组 Gulp (v4) 任务,它们执行诸如编译 Webpack 和 Sass、压缩图像等操作。这些任务在我处理项目时通过“监视”任务自动执行。
当我的监视任务运行时,如果我保存一个文件,“默认”任务集就会运行。如果我在“默认”任务完成之前再次保存,则会开始另一个“默认”任务,从而导致多个“默认”任务同时运行。
我已通过在触发新任务之前检查“默认”任务是否未运行来解决此问题,但是当我保存文件时,这会导致一些速度变慢的问题,然后快速进行另一个小调整,然后再次保存.这样做意味着只编译第一个更改,我必须等待整个过程完成,然后再次保存以编译新更改。
我的想法是在触发新任务时终止所有旧的“默认”任务。这样,同一任务的多个不会同时运行,但我可以依赖正在编译的最新代码。
我做了一些研究,但找不到任何与我的情况相符的东西。
如何在不杀死“watch”任务的情况下杀死所有“旧”gulp 任务?
编辑 1:当前的工作理论是将“默认”任务集存储为变量,并以某种方式使用它来终止进程,但这似乎并没有按我的预期工作。我已将我的监视任务放在下面以供参考。
// watch task, runs through all primary tasks, triggers when a file is saved
GULP.task("watch", () => {
// set up a browser_sync server, if --sync is passed
if (PLUGINS.argv.sync) {
CONFIG_MODULE.config(GULP, PLUGINS, "browsersync").then(() => {
SYNC_MODULE.sync(GULP, PLUGINS, CUSTOM_NOTIFIER);
});
}
// watch for any changes
const WATCHER = GULP.watch("src/**/*");
// run default task on any change
WATCHER.on("all", () => {
if (!currently_running) {
currently_running = true;
GULP.task("default")();
}
});
// end the task
return;
});
编辑 2:多想一下,也许这更像是一个 Node.js 问题而不是 Gulp 问题——我怎样才能阻止一个函数从该函数外部进行处理?基本上我想以某种方式将执行函数存储为变量,并在需要重新启动它时将其杀死。
【问题讨论】:
-
请您检查 Gulper (stackoverflow.com/a/28184494/3088349) 是否对我有帮助:)
标签: javascript node.js gulp gulp-watch