我用的是吞咽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。
所以,问题是:我怎样才能用一个任务来代替它呢?这两行没有重复。
发布于 2016-06-16 06:15:23
所以,问题是:我怎样才能用一个任务来代替它呢?
你不能。任务不能有争论。您的唯一选择是创建一个函数:
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缓存。如果是相反的话,你将不得不相应地调整它。
https://stackoverflow.com/questions/37848008
复制相似问题