commander.js显示帮助时,没有命令



我正在使用commander.js编写与API交互的简单node.js程序。所有呼叫都需要使用子命令。例如:

apicommand get

称为如下:

program
  .version('1.0.0')
  .command('get [accountId]')
  .description('retrieves account info for the specified account')
  .option('-v, --verbose', 'display extended logging information')
  .action(getAccount);

我现在想做的是在没有任何子命令的情况下调用apicommand时显示默认消息。就像您在没有子命令的情况下致电git时一样:

MacBook-Air:Desktop username$ git
usage: git [--version] [--help] [-C <path>] [-c name=value]
       [--exec-path[=<path>]] [--html-path] [--man-path] [--info-path]
       [-p | --paginate | --no-pager] [--no-replace-objects] [--bare]
       [--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>]
       <command> [<args>]
These are common Git commands used in various situations:
start a working area (see also: git help tutorial)
   clone      Clone a repository into a new directory
   init       Create an empty Git repository or reinitialize an existing one
...

您可以通过检查收到的参数来做类似的事情,如果除了node<app>.js之外没有其他参数,然后显示帮助文本。

program
  .version('1.0.0')
  .command('get [accountId]')
  .description('retrieves account info for the specified account')
  .option('-v, --verbose', 'display extended logging information')
  .action(getAccount)
  .parse(process.argv)
if (process.argv.length < 3) {
  program.help()
}

当您尝试传递命令时,它将命令存储在process.argv数组中。

您可以在代码末尾添加一个conditon,例如:

if(process.argv.length  <= 2)
console.log(program.help());
else 
program.parse();

我现在想做的是在没有任何子命令的情况下调用apicommand时显示默认消息。就像您在没有子命令的情况下致电git

如果您在没有子命令的情况下呼叫,则将自动从指挥官5显示。

(披露:我是指挥官的维护者。(

最新更新