Gulp.js。手表上的相同任务,不同的并行任务
Gulp.js. Same task on watch, with different parallel tasks
我使用 gulp 4.0。我有这个 'watch'
任务:
gulp.task("watch", function() {
gulp.watch("scss/*.scss", gulp.series("sass")).on("unlink", function(filepath) {
remember.forget("sass", path.resolve(filepath));
delete cached.caches.sass[path.resolve(filepath)];
});
gulp.watch("templates/**/*.jade", gulp.series("jade")).on("unlink", function(filepath) {
remember.forget("jade", path.resolve(filepath));
delete cached.caches.jade[path.resolve(filepath)];
});
});
所以,我有相同的两行:
remember.forget("jade", path.resolve(filepath));
delete cached.caches.jade[path.resolve(filepath)];
如果是管道,创建新任务会很容易,然后 运行 它们。但是在这里,我有一个参数(参数)- filepath
.
所以,问题是:如何用一项任务替换它?这两行没有重复。
So, the question is: How i can replace it with one task?
你不能。任务不能接受参数。您唯一的选择是创建一个函数:
function runTask(taskName) {
return function(evt, filepath) {
if (evt === "unlink") {
remember.forget(taskName, path.resolve(filepath));
delete cached.caches[taskName][path.resolve(filepath)];
}
gulp.series(taskName)();
};
}
gulp.task("watch", function() {
gulp.watch("scss/*.scss").on("all", runTask("sass"));
gulp.watch("templates/**/*.jade").on("all", runTask("jade"));
});
请注意,上面的代码假定您要在 运行 sass
和 jade
任务之前清除 sass
和 jade
缓存。如果是相反的方式,则必须相应地进行调整。
我使用 gulp 4.0。我有这个 'watch'
任务:
gulp.task("watch", function() {
gulp.watch("scss/*.scss", gulp.series("sass")).on("unlink", function(filepath) {
remember.forget("sass", path.resolve(filepath));
delete cached.caches.sass[path.resolve(filepath)];
});
gulp.watch("templates/**/*.jade", gulp.series("jade")).on("unlink", function(filepath) {
remember.forget("jade", path.resolve(filepath));
delete cached.caches.jade[path.resolve(filepath)];
});
});
所以,我有相同的两行:
remember.forget("jade", path.resolve(filepath));
delete cached.caches.jade[path.resolve(filepath)];
如果是管道,创建新任务会很容易,然后 运行 它们。但是在这里,我有一个参数(参数)- filepath
.
所以,问题是:如何用一项任务替换它?这两行没有重复。
So, the question is: How i can replace it with one task?
你不能。任务不能接受参数。您唯一的选择是创建一个函数:
function runTask(taskName) {
return function(evt, filepath) {
if (evt === "unlink") {
remember.forget(taskName, path.resolve(filepath));
delete cached.caches[taskName][path.resolve(filepath)];
}
gulp.series(taskName)();
};
}
gulp.task("watch", function() {
gulp.watch("scss/*.scss").on("all", runTask("sass"));
gulp.watch("templates/**/*.jade").on("all", runTask("jade"));
});
请注意,上面的代码假定您要在 运行 sass
和 jade
任务之前清除 sass
和 jade
缓存。如果是相反的方式,则必须相应地进行调整。