Node.js 中如何收集和解析命令行参数 您所在的位置:网站首页 cs4n65参数 Node.js 中如何收集和解析命令行参数

Node.js 中如何收集和解析命令行参数

2023-04-07 08:28| 来源: 网络整理| 查看: 265

前言

  在开发 CLI(Command Line Interface)工具的业务场景下,离不开命令行参数的收集和解析。

  接下来,本文介绍如何收集和解析命令行参数。

收集命令行参数

  在 Node.js 中,可以通过 process.argv 属性收集进程被启动时传入的命令行参数:

  // ./example/demo.js   process.argv.slice(2);   // 命令行执行如下命令   node ./example/demo.js --name=xiaoming --age=20 man   // 得到的结果   [ '--name=xiaoming', '--age=20', 'man' ] 复制代码

  由上述示例可以发现,Node.js 在处理命令行参数时,只是简单地通过空格来分割字符串。

  对于这样的参数数组,无法很方便地获取到每个参数对应的值,所以需要再进行一次解析操作。

命令行参数风格

  在解析命令行参数之前,需要了解一些常见的命令行参数风格:

Unix 风格:参数以「-」(连字符)开头GNU 风格:参数以「--」(双连字符)开头BSD 风格:参数以空格分割

  Unix 参数风格有一个特殊的注意事项:「「-」后面紧邻的每一个字母都表示一个参数名」。

ls -al 复制代码

  上述命令用来显示当前目录下所有的文件、文件夹并且显示它们的详细信息,等同于:

ls -a -l 复制代码

  GNU 风格的参数以 「--」开头,一般后面会跟上一个单词或者短语,例如熟悉的 npm 安装依赖的命令:

npm install --save koa 复制代码

对于两个单词的情况,在 GNU 参数风格中,会通过「-」来连接,例如 npm 安装仅用于开发环境的依赖:

npm install --save-dev webpack 复制代码

  BSD 是加州大学伯克利分校开发的一个 Unix 版本。其与 Unix 的区别主要在于参数前面没有 「-」,个人感觉这样很难区别参数和参数值。

注意事项:-- 后面紧邻空格时,表示后面的字符串不需要解析。

❞ 解析命令行参数 function parse(args = []) {   // _ 属性用来保留不需要处理的参数字符串   const output = { _: [] };   for (let index = 0; index  minimist(args))  .add('mri          ', () => mri(args))  .add('nopt         ', () => nopt(args))  .add('yargs-parser ', () => yargs(args))  .on('cycle', e => console.log(String(e.target)))  .run(); 复制代码

  本文的内容主要参考解析效率最高的 mri 库的源码,感兴趣的同学可以学习其源码实现。(顺便吐槽一下:嵌套三元操作符可读性真的很差。。)

  虽然上述基准测试中 minimist 效率并不很好,但是其覆盖了比较全的参数输入场景。(以上测试用例覆盖的场景有限)

写在最后

  最后,「如果本文对您有帮助,欢迎关注(公众号【漫谈大前端】)、点赞、转发 ε=ε=ε=┏(゜ロ゜;)┛。」



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有