Skip to content
导航

命令行参数

命令行参数是为命令提供额外输入的方法,通过接收并处理不同的参数,可以为命令行应用提供灵活性。

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 }