命令行参数
命令行参数是为命令提供额外输入的方法,通过接收并处理不同的参数,可以为命令行应用提供灵活性。
process.argv
Node.js 支持传递的参数列表,称为参数向量(argument vector),使用 process.argv
可以访问参数向量,是一个数组
js
// node file.js
process.argv == [
'path/to/node.exe',
'path/to/file.js'
]
js
// node example.js -a=b -c d
process.argv == [
'/usr/bin/node',
'/path/to/example.js',
'-a=b',
'-c',
'd'
]
处理命令行参数,本质上是按一个约定来处理参数向量。基于相似的约定,有不同的npm库实现了对参数向量的解析:
- minimist:将argv解析为key-value形式的对象
- commander:老牌的,最多用户的编程式命令行解析库
- cac:包体积小一半的编程式命令行解析库
commander
完整的 node.js 命令行解决方案。
示例:
js
// cmd.js
const commander = require('commander');
commander
.version('1.0.0', '-v, --version')
.option('-f, --flag', 'Detects if the flag is present.')
.option('-c, --custom <value>', 'Overwriting value.', 'Default')
.parse();
const options = commander.opts();
console.log(options);
命令行使用:
shell
> node cmd.js -f -c 123
{ custom: '123', flag: true }
> node cmd.js --format --custom=123
{ custom: '123', flag: true }