有人对npm yargs非常了解吗?我正在将此程序包用于命令行参数。但是找不到“ builder”的解释。我在哪里可以得到这个?
yargs.command({
command: 'test',
describe: 'testing a note',
builder:{
sample:{
describe: 'Note content',
demandOption: true,
type: 'string'
},
},
handler(argv){
notes.addNote(argv.title, argv.content);
}
})
答案 0 :(得分:0)
构建器模式可以帮助您提供有关使用多个可使用命令的文档帮助消息的更多上下文。
我们通常会使用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
主对象传递给您,并且您可以使用所有常用的{{1} }参数来描述每个命令的参数。
因此,在以上示例中,yargs
的用法如下:
yargs
答案 1 :(得分:0)
我发现上面的答案有点复杂,为了帮助将来可能登陆此页面的任何人,我建议阅读这篇 GeeksForGeeks 文章:
https://www.geeksforgeeks.org/node-js-yargs-module/
带有 .command(cmd, desc, [builder], [handler])
的示例是这样的:
//Add note
yargs
.command({
command: "add",
describe: "Add a note",
builder: {
title: {
describe: "Title of the note",
demandOption: true,
type: "string",
},
},
handler: (argv) => {
console.log("Added note with title:", argv.title);
},
})
.parse();
在终端中,您必须输入:
node app.js add --title="The Complete Node.js Developer Course (3rd Edition)"