首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Gulp.js。值班任务相同,并行任务不同

Gulp.js。值班任务相同,并行任务不同
EN

Stack Overflow用户
提问于 2016-06-16 00:34:33
回答 1查看 348关注 0票数 0

我用的是吞咽4.0。我有,这个'watch'任务:

代码语言:javascript
复制
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)];
    });
});

所以,我有同样的两句话:

代码语言:javascript
复制
remember.forget("jade", path.resolve(filepath));
delete cached.caches.jade[path.resolve(filepath)];

如果是管道,则很容易创建新任务,然后运行它们。但在这里,我有一个参数- filepath

所以,问题是:我怎样才能用一个任务来代替它呢?这两行没有重复。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-16 06:15:23

所以,问题是:我怎样才能用一个任务来代替它呢?

你不能。任务不能有争论。您的唯一选择是创建一个函数:

代码语言:javascript
复制
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"));
});

请注意,上面的代码假定您希望在运行sassjade任务之前清除sassjade缓存。如果是相反的话,你将不得不相应地调整它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37848008

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档