我刚刚发现了gulp-prompt任务。虽然它可以很容易地以不同的方式提示用户,但这些示例并未暗示如何利用用户的输入。例如,我想向用户提供两个设置(例如CDN托管或本地资产)并有条件地运行我的任务。你怎么能在Gulp做到这一点?这可以让我免于查看Yeoman发电机。
答案 0 :(得分:5)
为例
...
...
var inject = require('gulp-inject');
var cdnizer = require('gulp-cdnizer');
gulp.task('mytask', function(){
var target = gulp.src('./src/index.html');
return gulp.src('*')
.pipe(prompt.prompt({
type: 'input',
name: 'type',
message: 'What you like to do? [cdn/assets]'
}, function(res){
var sources;
if(res.type === 'cdn'){
sources = ...
target.pipe(inject(sources))
.pipe(gulp.dest('./src'));
}else{
target.pipe(cdnizer({...});
}
}));
});
答案 1 :(得分:0)
这是另一种实施方式。它会要求您使用键盘选择任务
gulp.task('default', function() {
var taskNames = [];
for (var taskName in gulp.tasks) {
if (gulp.tasks.hasOwnProperty(taskName)) {
taskNames.push(taskName);
}
}
return gulp.src('*').pipe(
prompt.prompt({
type: 'checkbox',
name: 'tasks',
message: 'Choose task name',
choices: taskNames
}, function(res){
//value is in res.task (the name option gives the key)
console.log(res);
res.tasks.forEach(function(taskName){
console.log(taskName);
gulp.tasks[taskName].fn();
});
}));
});