Make a script which accept command-line arguments
在Linux或Mac上运行带有命令行参数的node.js脚本的正确语法是什么?
要在没有参数的情况下运行脚本,我只需要使用命令node stuff.js,但在本例中,我想运行一个名为stuff.js的脚本,其中包含参数"blah","hee","woohoo!"。
- 如何向node.js传递命令行参数的可能副本?
- 如果我将脚本启动为NPM启动,可以使用相同的方法吗?
湖http:/ / / / / API文档的最新nodejs.org / process.html _ _ argv #流程流程
总而言之,你会运行它的样
node stuff.js blah hee"whoohoo!"
然后你在process.argv参数是可用的
- 这是否适用于Windows以及Mac/Linux/Unix?
- 是的,这是所有平台的标准配置
- 另外,字符串"whoohoo"上的引号是必要的吗(还是拼写错误)?
- 在*nix中,感叹号用于shell中的事件指示符,因此最好在需要文本字符'!'的地方引用或转义参数。(请注意,您的程序在argv的第5个条目中不会得到作为字符串一部分的引号,它只是whoohoo!)
- @hexist如果你有一个称为ah hah的参数,需要将其添加到参数列表中,那该怎么办?您是否还必须像上面对woohoo!所做的那样引用它,以便调用是node stuff.js blah hee"whoohoo!""ah hah"?argv文档没有详细介绍带有空格的var,这一点很重要,因为它似乎在空格上进行了定界。
- @Wimateeka简短回答:是的,如果有空格,您需要引号。长话短说:这不会被记录在节点中,因为这是一个操作系统/外壳程序,就像"哇哦!"事情。无论调用什么,节点进程都负责界定参数,而不是节点。然而,shell等使用的defacto标准是在传递具有空格或某些特殊字符的参数时需要引号,所以是的,使用引号。
如果你想做更复杂的东西,所以有以下模块:
- yargs由Benjamin Coe
- 由TJ holowaychuk指挥官
- 大卫caccavella vorpal red
- 艾萨克schlueter nopt red
和乐趣
- CLI由Guillermo烟台
- 万用表由substack节点
- 通过sindre sorhus粉笔
nomnom是另一个可能的解决方案。
这是简单的节点模块的活动:命令行参数
它允许一个简单的定义:define a
1 2 3 4 5
| const optionDefinitions = [
{ name: 'verbose', alias: 'v', type: Boolean },
{ name: 'src', type: String, multiple: true, defaultOption: true },
{ name: 'timeout', alias: 't', type: Number }
] |
它validates选项允许你访问你和他们在一个简单的方式。