47

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

要运行不带参数的脚本,我只需使用 command node stuff.js,但在这种情况下,我想运行一个stuff.js使用 arguments调用的脚本"blah", "hee", "woohoo!"

4

5 回答 5

58

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

总之,你会像这样运行它

node stuff.js blah hee "whoohoo!"

然后你的论点可以在process.argv

于 2012-10-17T01:27:44.177 回答
20

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

为了好玩

于 2012-10-17T08:06:51.677 回答
4

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

于 2013-04-15T05:49:40.753 回答
2

这个简单的节点模块也很有帮助:命令行参数

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

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

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

于 2018-04-01T19:42:12.293 回答
1

参数存储在

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

前任。在下面的这个例子中,我使用了指挥官 NPM 模块。 var args = 要求('指挥官')

带有指挥官的选项是使用.option()方法定义的。下面的示例从process.argv解析 args 和 options ,将剩余的 args 保留为 program.args 数组,这些数组没有被选项使用。这里process.argv是一个包含命令行参数的数组。第一个元素是“节点”,第二个元素是 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 文件,然后使用逗号(,)分隔多个参数, 例如多个参数。: node example.js -t tagname 这里我使用 list 来处理多个命令行参数,这样我们就可以传递多个命令行参数 ex。node 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. 亚格斯:-

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

  1. 前锋:-

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

于 2019-05-05T20:05:36.933 回答