创建一个接受命令行参数的脚本

时间:2012-10-17 01:23:59

标签: node.js command-line-arguments

在Linux或Mac上使用命令行参数运行Node.js脚本的正确语法是什么?

要运行没有参数的脚本,我只需使用命令node stuff.js,但在这种情况下,我想运行一个名为stuff.js的脚本,其参数为"blah", "hee", "woohoo!"

5 个答案:

答案 0 :(得分:48)

请参阅http://nodejs.org/docs/latest/api/process.html#process_process_argv

总之,你会像

一样运行它

node stuff.js blah hee "whoohoo!"

然后您的论据可在process.argv

中找到

答案 1 :(得分:15)

如果你想做更复杂的事情,以下模块真的很有帮助:

为了好玩

答案 2 :(得分:3)

Nomnom是另一种可能的解决方案。

答案 3 :(得分:1)

这个简单的节点模块也很有用:command-line-args

它允许定义一个简单的定义:

const optionDefinitions = [
  { name: 'verbose', alias: 'v', type: Boolean },
  { name: 'src', type: String, multiple: true, defaultOption: true },
  { name: 'timeout', alias: 't', type: Number }  
]

它验证您的选项,并允许您以简单的方式访问它们。

答案 4 :(得分:0)

参数存储在

process.argv 并在命令行中传递参数,请检查以下示例:

例如在下面的示例中,我使用了指挥官NPM模块。 var args = require('commander')

使用 .option()方法定义带有Commander的

选项。 下面的示例解析 process.argv 中的args和选项,将其余的args保留为program.args数组,这些未被选项占用。 这里 process.argv 是一个包含命令行参数的数组。第一个元素是'node',第二个元素是JavaScript文件的名称。接下来的元素将是任何其他命令行参数 执行后。

function list(val) {
    return val.split(',');
}
args.version('0.11.2')
    .option('-t, --tag [value]', 'tags to ignore', list, undefined)
    .parse(process.argv);

在这里从命令行获取输入,我们必须使用-t执行.js文件,并且在存在多个参数的情况下,该参数之后以逗号(,)分隔 例如:节点example.js -t标记名 在这里,我使用list处理多个命令行参数,以便我们可以传递多个命令行参数 例如节点example.js -t tagname1,tagname2 因此,在此之后,作为命令行参数传递的所有输入将在名为args的数组中可用,因此可以出于您的目的使用此数组 和 您可以从这里了解更多信息:-

  

https://nodejs.org/docs/latest/api/process.html#process_process_argv

或者您可以使用以下模块:

  1. 指挥官:-
  

https://www.npmjs.com/package/commander

  1. yargs :-
  

https://www.npmjs.com/package/yargs

  1. vorpal :-
  

https://www.npmjs.com/package/vorpal