我无法弄清楚为什么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();
});
}));
});
答案 0 :(得分:3)
致电gulp.series('task1', 'task2')
不运行task1
和task2
。它所做的就是返回一个新功能。只有当您将 函数调用为实际执行的任务时才会执行。
这意味着在您的情况下,您需要执行以下操作:
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))();