5

我不知道为什么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();
        });
    }));
});
4

2 回答 2

16

调用gulp.series('task1', 'task2')不运行并且. _ 它所做的只是返回一个新函数。只有调用函数后,任务才会真正执行。task1task2

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

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

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

于 2016-10-06T18:03:01.200 回答
1

Sven Schoenung的回答是正确的。

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

gulp.series('clean', 'patternlab:build', 'tag-version', deployWeb.bind(this, env))();
于 2019-06-06T12:21:27.740 回答