Gol*_*den 14 command-line-interface node.js
我目前正在查看commander.js,因为我想使用Node.js实现CLI.
使用命名参数很容易,因为"披萨"程序的示例显示:
program
.version('0.0.1')
.option('-p, --peppers', 'Add peppers')
.option('-P, --pineapple', 'Add pineapple')
.option('-b, --bbq', 'Add bbq sauce')
.option('-c, --cheese [type]', 'Add the specified type of cheese [marble]', 'marble')
.parse(process.argv);
Run Code Online (Sandbox Code Playgroud)
现在,例如,我可以使用以下方法调用该程序:
$ app -p -b
Run Code Online (Sandbox Code Playgroud)
但是一个未命名的参数呢?如果我想使用它,该怎么办?
$ app italian -p -b
Run Code Online (Sandbox Code Playgroud)
?我认为这不是很常见,因此为cp命令提供文件也不需要使用命名参数.只是
$ cp source target
Run Code Online (Sandbox Code Playgroud)
并不是:
$ cp -s source -t target
Run Code Online (Sandbox Code Playgroud)
我如何使用commander.js实现这一目标?
而且,我如何告诉commander.js需要未命名的参数?例如,如果您查看cp命令,则需要源和目标.
小智 11
老问题,但既然还没有回答......
使用当前版本的指挥官,可以使用位置参数.有关详细信息,请参阅有关参数语法的文档,但使用您的cp示例将类似于:
program
.version('0.0.1')
.arguments('<source> <target>')
.action(function(source, target) {
// do something with source and target
})
.parse(process.argv);
Run Code Online (Sandbox Code Playgroud)
如果两个参数都不存在,该程序将抱怨,并给出适当的警告信息.
您可以通过program.args. 将以下行添加到您的示例中
console.log(' args: %j', program.args);
Run Code Online (Sandbox Code Playgroud)
当你运行你的应用程序时,-p -b -c gouda arg1 arg2你会得到
you ordered a pizza with:
- peppers
- bbq
- gouda cheese
args: ["arg1","arg2"]
Run Code Online (Sandbox Code Playgroud)
然后你可以写一些类似的东西
copy args[0] to args[1] // just to give an idea
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2351 次 |
| 最近记录: |