Gulp提示决定运行哪些任务?

时间:2014-08-14 13:03:25

标签: javascript node.js gulp

我刚刚发现了gulp-prompt任务。虽然它可以很容易地以不同的方式提示用户,但这些示例并未暗示如何利用用户的输入。例如,我想向用户提供两个设置(例如CDN托管或本地资产)并有条件地运行我的任务。你怎么能在Gulp做到这一点?这可以让我免于查看Yeoman发电机。

2 个答案:

答案 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();
        }); 
    }));

});