轻量级 Node.js 命令行参数库选哪个?
常用 cli 参数解析
Commander.js
- 一个常用的轻量级的命令行界面框架
。Yargs
- 可以帮助您解析命令行参数
并生成优雅的用户界面。yargs-parser
- yargs 使用的强大选项解析器
。arg
- 是一个没有特定偏好和基本的命令行参数解析器
。minimist
- 解析参数选项。该模块是 Optimist 命令行参数解析器的核心,但不包含所有花哨的装饰。
侧重点不同,Commander.js 是一个框架,功能大而全,其他的侧重于使用不同的风格解析参数。
下载量分析
下载量可能与其所在生态有关系:
- Commander 的下载量是最大,达到的每周上亿的下载量。
- 其次是 yargs 系列每周大概 8千多万的下载量。
- 其次就是 vercel 没住大概 稳定在 2 千万左右,可能与 vercel 有很大的关系。
- minimist 下载量接近 5 千万的下载量。
参数解析的核心
process.argv 是一个包含当前 Node.js 进程的命令行参数的数组。
参数从数组的第三个参数进行解析。
const args = process.argv.slice(2)
commander.js 中实用 prase 方法
const { program } = require('commander');
program
.version('0.1.0')
.option('-f, --file <filename>', 'Specify the file name')
.parse(process.argv); // 实用 parse 方法
console.log('file:', program.file);
yargs 中需要访问 argv 属性
const yargs = require('yargs');
const argv = yargs
.option('file', {
alias: 'f',
description: 'Specify the file name',
type: 'string',
demandOption: true,
})
.help()
.alias('help', 'h')
.argv; // 访问 argv 属性
console.log('file:', argv.file);
arg 中最简单,不用访问 argv
属性
const arg = require('arg');
const args = arg({
'--file': String,
'-f': '--file',
});
console.log('file:', args['--file']);
minimist 示例
minimist 需要访问argv 属性,并且 slice(2) 后的结果,args 是
const args = minimist(process.argv.slice(2));
args 是一个对象,第一属性是 _
属性中是一个数组。执行下面的命令:
node app.js --a contentA --b contentB
得到的结果是:
{ _: [], a: 'contentA', b: 'contentB' }
注意:minimist 1.2.6 之前版本可能存在原型污染问题。
小结
从上面的例子可以看出 arg 和 minimist 最为简单,arg 甚至不用访问 procress.env 的属性。就访问参数而言使用:arg > minimist > yargs > commander
。
更多
微信搜索并关注公踪号 进二开物
,更多技术 JS/TS/CSS/Rust 文章...
转载自:https://juejin.cn/post/7232252018714116151