当gulpfile中不存在用户所需的任务时,运行特定任务

时间:2017-10-23 16:23:25

标签: javascript node.js gulp

gulpfile中没有用户提供的任务时,是否有任何方法可以运行特定任务。

例如,如果用户运行gulp buildbuild中没有gulpfile任务,那么特定任务(或默认任务,对我来说无关紧要) )应该运行。

作为类比,请将指定的任务视为gulp 404页面

2 个答案:

答案 0 :(得分:1)

gulp继承自orchestrator,其中包含tasks实例变量,该变量是一个普通对象,其键是添加到实例的任务名称。如果您将tasks替换为proxy,则可以使用default陷阱处理程序返回默认任务,例如get

const gulp = require('gulp')

gulp.tasks = new Proxy(gulp.tasks, {
  get (target, property) {
    if (target.hasOwnProperty(property)) {
      return target[property]
    }

    return target.default
  }
})

即使在已经将某些任务添加到gulp实例之后,该代码也可以在任务序列开始之前的任何时间运行。

答案 1 :(得分:0)

帕特里克的回答非常有帮助。自从我收到ESLint警告并出现以下错误后,我不得不稍微修改一下 -

TypeError: this.tasks.hasOwnProperty is not a function

所以我想发布我的更改。这是我的最终代码 -

gulp.tasks = new Proxy(gulp.tasks, {
    get: function(target, property) {
        if (undefined !== target[property]) {
            return target[property];
        }
        return target.default; //or target["<Custom task name>"]
    }
});