在前端开发中,有很多场景需要从命令行中获取参数,例如打包工具的配置参数、调试工具的调试参数等等。为了方便地获取参数,并且不需要开发者自己处理参数的解析,就可以使用 npm 包 argumentum。
argumentum 简介
argumentum 是一个 Node.js 模块,用于处理命令行参数。argumentum 可以解析参数、验证参数、提供帮助信息等功能,并且非常易于使用。
argumentum 的特点:
- 简单易用:argumentum 的 API 设计非常友好,学习和使用都非常方便。
- 功能丰富:argumentum 可以处理很多命令行参数场景,包括可选参数、必填参数、默认参数等等。
- 定制化强:argumentum 可以根据需求配置参数解析器、参数验证器等等。
- 可扩展性好:argumentum 有很多插件,可以根据需求选择性地引入,扩展 argumentum 的功能。
安装及基本使用
安装
使用 npm 安装 argumentum:
$ npm install argumentum --save
基本使用
引入 argumentum:
const Argumentum = require('argumentum');
配置参数解析及处理
-- -------------------- ---- ------- ----- ---- - --- ------------ -------- - - ----- ------- ---------- ---- ----- -------- ---- ------------- -- - ----- ------- ---------- ---- ----- ----- ------- -------- ------------ --------- ---- -- - ----- --------- ---------- ---- ----- ------- ---- ------ - -- ------ ----- ---- ----- -- ------- -------- -- ------ --- ------------- -- ------------------ - ------------------------- ---------------- - -------------------- ------------------ ---------------------- --------------------
命令行执行:
$ node index.js -h
输出:
Usage: This tool helps to convert Markdown to HTML. Options: --file, -f File path. Required. Default: README.md --output, -o Output file path. --help, -h Display help information.
参数类型
argumentum 有三种参数类型:flag、option、command。
flag
flag 是表示“是”或“否”的参数,通常用于开启或关闭某项功能。
flag 类型参数的定义如下:
{ name: String, // 参数名,必须是字符串 shortName: String, // 参数的简称,可选参数 help: String // 参数的说明,必须是字符串格式 }
例如:
{ name: 'verbose', shortName: 'v', help: 'Display verbose output.' }
在命令行中指定 verbose 参数,表示开启 verbose 输出:
$ node index.js -v
option
option 是表示具体数值的参数,可以是字符串、数字等类型。
option 类型参数的定义如下:
{ name: String, // 参数名,必须是字符串 shortName: String, // 参数的简称,可选参数 help: String, // 参数的说明,必须是字符串格式 required: Boolean, // 是否必填,可选参数,默认为 false default: Any, // 默认值,可选参数,默认为 undefined validate: Function // 参数验证函数,可选参数 }
例如:
{ name: 'file', shortName: 'f', help: 'File path.', default: 'README.md', required: true }
在命令行中指定与 option 参数对应的值,例如:
$ node index.js -f="test.md"
command
command 是表示命令的参数,常常在复杂的命令行工具中使用。
command 类型参数的定义如下:
{ name: String, // 参数名,必须是字符串 help: String // 参数的说明,必须是字符串格式 }
例如:
{ name: 'build', help: 'Build the project.' }
在命令行中使用命令参数:
$ node index.js build
参数解析
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 插件,用于输出版本号信息:
-- -------------------- ---- ------- ----- ---------- - ---------------------- ----- ------- - ---------------------------------- ----- ---- - --- ------------ -------- - - ----- ---------- ----- -------- ------- -------- - - --- --------------------------------------- --------- ------------- --------------------------------- ---------------------------------
在命令行中执行:
$ node index.js --version
可以输出:
1.0.0
除了 argumentum-version,argumentum 还提供了很多其他插件,可以根据需求选择性地引入。
总结
argumentum 是 Node.js 中一款非常好用的命令行参数处理工具,可以用于处理参数解析、参数验证、帮助信息等功能。argumentum 使用简单易学、功能丰富、可定制化和可扩展性强,能够满足开发者对命令行工具参数的大多数需求。
参考示例代码:
-- -------------------- ---- ------- ----- ---------- - ---------------------- ----- -- - -------------- ----- ---- - --- ------------ -------- - - ----- ------- ---------- ---- ----- -------- ---- ------------- -- - ----- ------- ---------- ---- ----- ----- ------- -------- ------------ --------- ----- --------- ------- ------- -- - -- ----------------------- - ----- --- ----------- ---- ---------- ---- --- --------- - - -- - ----- --------- ---------- ---- ----- ------- ---- ------ -- - ----- ---------- ---------- ---- ----- -------- ------- -------- - -- ------ ----- ---- ----- -- ------- -------- -- ------ --- ------------- -- ------------------ - ------------------------- ---------------- - -------------------- ------------------ ---------------------- -------------------- ----------------------- ---------------------
参考链接:
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/75921