gulp.series()不会运行任务

时间:2016-10-06 17:13:57

标签: javascript node.js gulp gulp-4

我无法弄清楚为什么gulp.series()没有在我的回调函数中触发。

我尝试使用gulp-prompt从用户输入中获取字符串,并使用gulp.series()调用构建和部署函数。我gulp.series()内的任务根本不会发生。

gulp.task('test', function(){
  const prompt = require('gulp-prompt');
  return gulp.src('test.js')
    .pipe(prompt.prompt({
        type: 'checkbox',
        name: 'env',
        message: 'which environment do you want to deploy to?',
        choices: ['qa','prod']
    },function(res){
      //console.dir(res.env);
        var env = res.env;
        console.log(env);
        console.log('hi');
        gulp.series('clean', 'patternlab:build', 'tag-version', deployWeb.bind(this, env), function(done){
          done();
        });
    }));
});

2 个答案:

答案 0 :(得分:3)

致电gulp.series('task1', 'task2') 运行task1task2。它所做的就是返回一个新功能。只有当您将 函数调用为实际执行的任务时才会执行。

这意味着在您的情况下,您需要执行以下操作:

var runTasks = gulp.series('clean', 'patternlab:build',
                           'tag-version', deployWeb.bind(this, env));
runTasks();

您在代码中使用的整个function(done){ done(); }部分确实没有多大意义,gulp.series()也不需要。

答案 1 :(得分:0)

Sven Schoenung的答案是正确的。

如果您不想添加新变量,只需将其设为自调用JS函数,例如

gulp.series('clean', 'patternlab:build', 'tag-version', deployWeb.bind(this, env))();