0

我正在使用yargs开发一个 cli 工具。yargs这是处理 cli 选项的简单代码

let argv = require('yargs')
    .usage('$0 <command> [option]')
    .command(
        'validate_zip',
        'validate the directory structure for the zip to be uploaded',
        {
            'validate_zip': {
                alias: 'vz'
            }
        }

    )
    .option('s', {
        alias: 'stage',
        describe: 'stage',
        type: 'string',
        choices: ['dev', 'qa', 'uat', 'prod'],
        count: true
    })
    .demandCommand(1, 'You need at least one command before moving on!')
    .help('h')
    .alias('h', 'help')
    .example('$0 validate_zip -s dev', 'testing yargs')
    .showHelpOnFail(false, "Specify --help || -h for available options")
    .argv;

这是 cli 命令 node testYargs.js vz -s dev。我试过通过"dev",但有同样的问题。

并显示以下消息

Invalid values:
  Argument: s, Given: 1, Choices: "dev", "qa", "uat", "prod"

Specify --help || -h for available options
4

1 回答 1

0

count 选项不应设置为 true。count有一个特殊的含义,表示应该统计一个标志出现的次数:

有关计数的详细信息。可以在原始yargsapi 文档中找到。

所以-v -v -v会设置v = 3,这将打破选择逻辑。

归功于原始答案。

于 2019-07-15T22:24:15.690 回答