我使用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
。
所以,问题是:如何用一个任务替换它?没有重复这两行。
答案 0 :(得分:1)
所以,问题是:如何用一个任务替换它?
你不能。任务不能参数。您唯一的选择是创建一个功能:
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
缓存。如果相反,你必须相应地调整它。