minimist轻量级的命令行参数解析引擎
Updated:
nodejs的命令行参数解析工具有很多,比如:argparse、optimist、yars、commander。optimist和yargs内部使用的解析引擎正是minimist,如果你喜欢轻量级的技术,那么minimist足够简单好用,代码量也很少(只有几百行),非常适合研读。
minimist的特性比较全面:
- short options
- long options
- Boolean 和 Number类型的自动转化
- option alias
先看一下minimist整体的解析过程,代码大致是:
|
|
解析过程中,minimist会依次匹配不同的模式,从long options到short options,匹配之后再进行相应的解析工作。
我们可以写一个简单地例子来试试minimist:
|
|
|
|
从上面的例子可以看到,minimist和optimist一样会把参数解析成一个字典。但是最后一次的值与前两次不太一样。去掉world
之后,hello
的值变成了true
。一般情况下,如果参数后面没有跟着的value的话,minimist会把参数的值解析成true。不过,minimist在解析接口当中提供的string
选项来修改上面的解析过程。string
选项可以传入一个数组,数组中的参数会被一直解析成字符串。我们修改一下上面的test.js
|
|
|
|
在string
选项当中添加了hello
之后,hello
的值会一直解析成字符串,如果去掉了world
,那么hello
将解析成空字符串。
minimist还支持boolean
选项,与string
选项相反,在boolean
选项当中的参数,会被一直解析成true
或false
,比如下面的例子:
|
|
|
|
hello
将一直被解析成true
或false
,添加的world
会保存到args
的_
选项里面。
除了string
和boolean
以外,minimist还提供了default
和alias
两个选项,分别用来设定默认值和option alias。