如何解析 Node.js 中的命令行参数

Node.js 是一个基于事件的开源异步 I/O 框架,它使用 Google 的 V8 JavaScript 引擎。 我们使用它来开发在服务器端和客户端都使用 JavaScript 的应用程序。 Node.js 应用程序是用 JavaScript 编写的。

Node.js 应用程序也像任何其他编程语言一样接受命令行参数。 默认情况下,Node.js 能够处理你的参数,但如果你想要一些额外的功能,那么你可以使用第三方工具和包,如 yargsminimist. 在本文中,我们将看到如何使用 Node.js 解析命令行参数 process.argv, yargs, 和 minimist.

什么是命令行参数?

命令行参数是在通过操作系统的命令行界面 (CLI) 运行程序时传递给程序的附加信息或命令字符串。 这些参数通常包括用于为应用程序设置属性或配置值的信息。

在 Node.js 中,提供给 shell 的所有命令行参数都以名为“参数值(argv)”的数组形式转发给进程。 后来 Node.js 以 process.argv 的形式为每个正在运行的进程使用这个数组,或者你可以说参数默认存储在 process.argv 中。

为什么要使用命令行参数?

命令行参数非常灵活,因为它们作为字符串传递给您的程序,并且字符串数据类型可以轻松转换为其他类型。

它允许您在应用程序启动之前将信息传递给应用程序,并且您还可以通过命令行传递无限数量的参数。

命令行参数的示例语法是什么?

这是一个示例语法,命令行参数的样子:

 [runtime] [script_name] [argument-1 argument-2 argument-3 ... argument-n]

参数由空格分隔,运行时可以是 sh、java、node 等。

如何解析 Node.js 中的命令行参数

在这里,我们将首先看到使用解析参数 process.argv 后来与 yargsminimist.

1. 使用 process.argv 解析参数

使用 process.argv 是在 Node.js 中解析参数的最简单方法,您不需要为此安装任何额外的包或库。 您只需将参数传递给 Node.js 应用程序,这些参数由 process.argv 默认情况下。

process.argv 数组包含三个主要元素:

  • 首先,文件系统路径指向节点可执行文件。
  • 其次是正在执行的 JavaScript 文件的名称。
  • 第三,用户传递的第一个参数。

例子 – 我们将编写一个简单的 Node 脚本,该脚本将打印传递给应用程序的所有命令行参数。

  • 创建一个名为 ‘processargv.js’ 并粘贴以下代码。

    JavaScript
    ‘使用严格’; for (let j = 0; j < process.argv.length; j++) { console.log(j + ' -> ‘ + (process.argv[j])); }1234‘使用严格’;为了 ( j = 0; j < 过程.argv.长度; j++) { 安慰.日志(j + ‘ -> ‘ + (过程.argv[j]));}

  • 现在通过传递参数使用以下命令运行“processargv.js”。
    node processargv.js I am Node 
    

    在这里,我们将三个参数传递给文件,因此,您将看到“I”、“am”、“Node”分别存储在第 2、第 3 和第 4 个索引处。 输出将如下所示:

2. 使用 Yargs 传递参数

Yargs 是一个 Node.js 模块,可以帮助您传递参数。 它允许您以键值对的形式传递参数,您甚至可以稍后在程序中使用键访问参数值。

  • 使用此命令安装 yargs 模块。
    npm i yargs 
    
  • 现在将以下代码保存在名为的文件中 ‘yargs.js’ 在执行程序时,我们将提供姓名和年龄的值。

    JavaScript
    ‘使用严格’; const args = require(‘yargs’).argv; console.log(‘名称:’ + args.name); 控制台日志(’年龄:’ + args.age);123456‘使用严格’; 常量 参数 = 要求(‘yargs’).argv; 安慰.日志(‘姓名: ‘ + 参数.姓名);安慰.日志(‘年龄: ‘ + 参数.年龄);

  • 要执行以下命令,请在提示中执行以下代码。 我们正在传递 name 和 age 的值。
    node yargs.js --name=node --age=15 
    

    输出将如下所示:

了解更多高级功能 yargs 访问此高级指南。

3. 使用 Minimist 模块解析参数

另一种解析 Node.js 应用程序命令行参数的方法是使用 minimist 模块。 它解析 process.argv 数组中的参数,然后将其传输到易于使用的关联数组中。 此关联数组可用于使用索引名称访问元素。

  • 使用此命令安装 minimist 模块。
    npm i minimist 
    
  • 现在保存以下脚本命名 ‘minimist.js’. 这里我们使用了 slice 方法,该方法将从作为参数传递给它的索引开始删除所有先前的数组元素。

    JavaScript
    ‘使用严格’; const args = require(‘minimist’)(process.argv.slice(2)); 控制台日志(args.i); 控制台日志(args.n);123456‘使用严格’; 常量 参数 = 要求(‘极简主义者’)(过程.argv.(2)); 安慰.日志(参数.一世);安慰.日志(参数.n);

  • 在传递参数时,我们还可以指定要访问元素的字符。 在这里,我们将指定 ‘i’ 作为第二个索引的名称,然后指定 ‘n’ 作为第三个索引的名称。 像这样:
    node minimist.js –i node –n 15 
    

    输出将如下所示:

    使用 Minimist 模块读取 Node.js 命令参数

尽管 minimist 没有那么多丰富的功能 yargs 您仍然可以使用它来简化您的工作。 有关 minimist 的更多详细信息,请访问此处。

结论

如果您使用 Node.js,参数解析是一个简单而重要的主题。 有多种选择可以让您的工作变得轻松。 因此,如果您想要丰富和高级的功能,请根据您的需求进行选择,然后使用 yargs 否则从 process.argvminimist.