Commander.js 在没有命令的情况下调用时显示帮助
Posted
技术标签:
【中文标题】Commander.js 在没有命令的情况下调用时显示帮助【英文标题】:Commander.js display help when called with no commands 【发布时间】:2017-11-04 07:42:33 【问题描述】:我正在使用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
...
【问题讨论】:
检查process.argv
,它是一个包含参数的数组。
【参考方案1】:
我现在要做的是在没有任何子命令的情况下调用 apicommand 时显示默认消息。就像在没有子命令的情况下调用 git 一样
如果您在没有子命令的情况下调用,则从 Commander 5 开始会自动显示帮助。
(披露:我是Commander的维护者。)
【讨论】:
我们如何禁用自动帮助?【参考方案2】:当您尝试传递命令时,它会将命令存储在 process.argv
数组中。
您可以在代码末尾添加一个条件,例如 -:
if(process.argv.length <= 2)
console.log(program.help());
else
program.parse();
【讨论】:
【参考方案3】:您可以通过检查收到的参数来执行此类操作,如果除了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()
【讨论】:
以上是关于Commander.js 在没有命令的情况下调用时显示帮助的主要内容,如果未能解决你的问题,请参考以下文章