npm 包 argumentum 使用教程

阅读时长 11 分钟读完

在前端开发中,有很多场景需要从命令行中获取参数,例如打包工具的配置参数、调试工具的调试参数等等。为了方便地获取参数,并且不需要开发者自己处理参数的解析,就可以使用 npm 包 argumentum。

argumentum 简介

argumentum 是一个 Node.js 模块,用于处理命令行参数。argumentum 可以解析参数、验证参数、提供帮助信息等功能,并且非常易于使用。

argumentum 的特点:

  • 简单易用:argumentum 的 API 设计非常友好,学习和使用都非常方便。
  • 功能丰富:argumentum 可以处理很多命令行参数场景,包括可选参数、必填参数、默认参数等等。
  • 定制化强:argumentum 可以根据需求配置参数解析器、参数验证器等等。
  • 可扩展性好:argumentum 有很多插件,可以根据需求选择性地引入,扩展 argumentum 的功能。

安装及基本使用

安装

使用 npm 安装 argumentum:

基本使用

引入 argumentum:

配置参数解析及处理

-- -------------------- ---- -------
----- ---- - --- ------------
  -------- -
    -
      ----- -------
      ---------- ----
      ----- -------- ---- -------------
    --
    -
      ----- -------
      ---------- ----
      ----- ----- -------
      -------- ------------
      --------- ----
    --
    -
      ----- ---------
      ---------- ----
      ----- ------- ---- ------
    -
  --
  ------ ----- ---- ----- -- ------- -------- -- ------
---

-------------

-- ------------------ -
  -------------------------
  ----------------
-

-------------------- ------------------
---------------------- --------------------

命令行执行:

输出:

参数类型

argumentum 有三种参数类型:flag、option、command。

flag

flag 是表示“是”或“否”的参数,通常用于开启或关闭某项功能。

flag 类型参数的定义如下:

例如:

在命令行中指定 verbose 参数,表示开启 verbose 输出:

option

option 是表示具体数值的参数,可以是字符串、数字等类型。

option 类型参数的定义如下:

例如:

在命令行中指定与 option 参数对应的值,例如:

command

command 是表示命令的参数,常常在复杂的命令行工具中使用。

command 类型参数的定义如下:

例如:

在命令行中使用命令参数:

参数解析

argumentum 支持两种方式解析参数:process.argv 和命令行字符串。默认情况下,argumentum 会使用 process.argv 进行参数解析。

使用 process.argv 解析参数

process.argv 是 Node.js 中内置的全局变量,表示当前进程的命令行参数数组。

例如,以下代码解析命令行参数:

-- -------------------- ---- -------
-- ---------- -------- -- ------- --
----- ---- - --- ------------
  -------- -
    -
      ----- -------
      ---------- ----
      ----- ----- ------
    --
    -
      ----- ----------
      ---------- ----
      ----- -------- ------- --------
    -
  -
---

-------------

------------------------------ -- -------
--------------------------------- -- ----

其中 args.parse() 会使用 process.argv 解析参数。

使用命令行字符串解析参数

除了使用 process.argv,argumentum 还支持使用自定义的命令行字符串进行参数解析。

例如,以下代码解析命令行参数:

-- -------------------- ---- -------
----- ---------- - --- ------- ----
----- ---- - --- ------------
  -------- -
    -
      ----- -------
      ---------- ----
      ----- ----- ------
    --
    -
      ----- ----------
      ---------- ----
      ----- -------- ------- --------
    -
  -
---

-----------------------

------------------------------ -- -------
--------------------------------- -- ----

参数验证

argumentum 支持自定义参数验证器,用于验证参数的合法性。每个选项(option)都可以设置一个验证器,验证器是一个函数,接受两个参数:选项值和选项本身。

例如,以下代码解析命令行参数,并且验证 file 参数的合法性:

-- -------------------- ---- -------
----- ---- - --- ------------
  -------- -
    -
      ----- -------
      ----- ----- -------
      --------- ------- ------- -- -
        -- ----------------------- -
          ----- --- ----------- ---- ---------- ---- --- ---------
        -
      -
    -
  -
---

-------------

------------------------------

在选项设置了验证器之后,当传入的参数不合法时,会抛出自定义的异常信息。

使用插件

argumentum 提供了很多插件,用于扩展 argumentum 的功能,例如:argumentum-version、argumentum-help 等等。这些插件可以在 argumentum 配置过程中进行引入,从而增强 argumentum 的功能。

例如,以下代码引入了 argumentum-version 插件,用于输出版本号信息:

-- -------------------- ---- -------
----- ---------- - ----------------------
----- ------- - ----------------------------------

----- ---- - --- ------------
  -------- -
    -
      ----- ----------
      ----- -------- ------- --------
    -
  -
---

--------------------------------------- ---------

-------------

---------------------------------
---------------------------------

在命令行中执行:

可以输出:

除了 argumentum-version,argumentum 还提供了很多其他插件,可以根据需求选择性地引入。

总结

argumentum 是 Node.js 中一款非常好用的命令行参数处理工具,可以用于处理参数解析、参数验证、帮助信息等功能。argumentum 使用简单易学、功能丰富、可定制化和可扩展性强,能够满足开发者对命令行工具参数的大多数需求。

参考示例代码:

-- -------------------- ---- -------
----- ---------- - ----------------------
----- -- - --------------

----- ---- - --- ------------
  -------- -
    -
      ----- -------
      ---------- ----
      ----- -------- ---- -------------
    --
    -
      ----- -------
      ---------- ----
      ----- ----- -------
      -------- ------------
      --------- -----
      --------- ------- ------- -- -
        -- ----------------------- -
          ----- --- ----------- ---- ---------- ---- --- ---------
        -
      -
    --
    -
      ----- ---------
      ---------- ----
      ----- ------- ---- ------
    --
    -
      ----- ----------
      ---------- ----
      ----- -------- ------- --------
    -
  --
  ------ ----- ---- ----- -- ------- -------- -- ------
---

-------------

-- ------------------ -
  -------------------------
  ----------------
-

-------------------- ------------------
---------------------- --------------------
----------------------- ---------------------

参考链接:

  1. argumentum
  2. Node.js documentation
  3. Node.js documentation

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/75921

纠错
反馈