构建器模式可以帮助提供有关使用多个可用命令的文档帮助消息的更多上下文。
我们通常会使用 lambda 函数版本而不是对象版本。
例如,一个应用程序可以支持许多“命令”。这些命令将具有与同一应用程序相关联的不同功能位。
以下是用户可以执行的简单get
/post
示例:
$ node src/index.js get
$ node src/index.js post "" 5001
get
和post
之后index.js
是yargs
考虑命令的内容。
您可以实现这一点的一种方法yargs
是:
require('yargs') // eslint-disable-line
.command('post data [port]', 'post some data', yargs => {
yargs.positional('data', {
describe: 'post string',
require: true
})
.positional('port', {
require: false,
describe: 'port to bind on',
default: 8080
})
})
.command('get [port]', 'get some data', yargs => {
yargs.positional('port', {
require: false,
describe: 'port to bind on',
default: 8080
})
})
.option('verbose', {
alias: 'v',
type: 'boolean',
description: 'Run with verbose logging'
})
.argv
因此,在请求帮助信息时,您可以执行以下操作:
$ node src/index.js --help
index.js [command]
Commands:
index.js serve [port] start the server
index.js post data [port] post some data
Options:
--help Show help [boolean]
--version Show version number [boolean]
-v, --verbose Run with verbose logging [boolean]
然后,您可以进一步深入了解帮助信息:
$ node src/index.js post --help
index.js post data [port]
post some data
Positionals:
data post string [required]
port port to bind on [default: 8080]
post
这显示了该命令的特定帮助。
因此,命令构建器模式允许我们将任意数量的命令传递给应用程序并提供其参数文档。
当您必须支持许多需要自己的参数的不同命令时,它非常有用。
因此,要回答从哪里获得更多文档的问题,还有很长的路要走,如果您使用 lambda 版本,则yargs
主对象将传递给您,您可以使用所有常用yargs
参数来描述每个命令的参数。
因此,在上面的示例中,like 的用法yargs
:
yargs.positional('port', {
require: false,
describe: 'port to bind on',
default: 8080
})
记录在:
https ://github.com/yargs/yargs/blob/master/docs/api.md