使用yargs / optimist的多个命令具有不同的选项

时间:2015-02-17 13:28:59

标签: node.js arguments command-line-arguments

我正在尝试使用yargs为节点模块编写CLI,但是我很难设置两个可以使用的不同命令,一个只需要一个参数,另一个需要两个。这是我到目前为止所拥有的

var argv = require('yargs')
   .option('r', {
       alias : 'reset',
       describe: 'clear data for site(s)',
       type: 'string'
   }).
   option('d', {
       alias : 'dashboard',
       describe: 'copy dashboard for the specified site across all others',
       type: 'array'
   })
   .usage('Usage: $0 -r [string] -d [array]')
   .argv;

重置数据我会做

node main.js -r mysite

但要复制我希望做的仪表板

node main.js -d theSiteToCopyFrom theSiteToCopyTo

甚至

node main.js -d theSiteToCopyFrom [theArrayOfSitesToCopyTo, , ,] 

我查看了给出的示例,例如

var argv = require('yargs')
    .option('f', {
        alias : 'file',
        demand: true,
        default: '/etc/passwd',
        describe: 'x marks the spot',
        type: 'string'
    })
    .argv
;

但我看不出如何指定不同命令需要多个参数。

1 个答案:

答案 0 :(得分:2)

我刚刚发布了yargs的nargs功能,它为您提供了这种功能:

https://github.com/bcoe/yargs#nargskey-count