javascript - 在 Gulp 中使用 Yargs

标签 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 询问配置参数。

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

最佳答案

我花了一点时间才弄清楚,在 config 对象中注释掉您的 default 选项可以使它起作用。

如果 demandOption 设置为 true 应该没有默认值,这确实有意义!然而,文档似乎没有说明任何内容(而且它只是默默地失败了),请参阅 valid options keys .

与此理论一致的是,您的第二个非必需选项“host”即使在未定义或 null default: "" 的情况下也能正常工作。

关于javascript - 在 Gulp 中使用 Yargs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49780754/

相关文章:

javascript - Angular.js + karma + Jasmine : Unknown provider for service

javascript - 让 ng-repeat 在 AngularJS 的 $interpolate 服务中工作

javascript - 大量的 mongodb 动态集合对于项目来说是一件坏事并且对性能有影响

javascript - HTML 自动化脚本

gulp - 如何在 Visual Studio 中禁用 Task Runner Explorer?

node.js - 如何将多个键映射到 yargs .alias 中的别名

javascript - 我将如何配置 yargs 以获取单个输入文件和可选输出文件?

javascript - 我可以为所有 AJAX 请求设置全局 header 吗?

gulp - 如何使用键盘快捷键运行 Gulp 任务

javascript - 为什么此 yargs 脚本帮助页面中缺少命令?