在Gulp中使用Yargs

时间:2018-04-11 17:00:55

标签: javascript gulp yargs

我正在使用yargs在gulp命令中传递参数。我在检查参数的有效性时会遇到麻烦,如果标志存在与否,将会发生什么。

更具体地说,这是我的gulpfile.js



'use strict';

var argv = require('yargs').options({
    'config': {
        alias: 'c',
        demandOption: true,
        default: 'default',
        describe: 'Choose a configuration file name',
        type: 'string'
      },
    'host': {
        alias: 'h',
        demandOption: false,
        default: '',
        describe: 'Replace the host starting with http://',
        type: 'string'
    }
}).argv;

gulp.task('config', function(){

// If argument -c is passed copy config file in path 
// configs/Config_{{argv.c}}.js into Config.js
    gulp.src('./app/jsx/constants/Config_' + argv.c + '.js')
      .pipe(rename({ basename: 'Config'}))
      .pipe(gulp.dest('./app/jsx/constants'))
})




如果我gulp config -c something,一切都按预期工作。

我想要的是:如果命令中没有提供配置参数,请让CLI。

有没有人有过这方面的经验?

1 个答案:

答案 0 :(得分:1)

我花了一段时间才弄清楚注释掉default对象中的config选项可以使它工作。

有意义的是,如果将demandOption设置为true,则应该没有默认值!但是该文档似乎没有对此发表任何评论(它只是默默地失败了),请参阅valid options keys

与该理论一致的是,您的第二个非必需选项'host'可以与未定义或空default: ""一起使用。