nodejs commander命令行

这里用到的是 commander 这个库。它的文档地址是:https://www.npmjs.com/package/commander

const program = require("commander");

// 分为2种操作, 2种操作互相冲突

// Options 操作
program
  .version("0.0.1")
  .option("-t, --types [type]", "test options")
  // option这句话必须加
  .parse(process.argv);

// Commands 操作
program
  // 命令与参数: <> 必填; [] 选填
  .command("exec <cmd> [env]")
  // 别名
  .alias("ex")
  // 帮助信息
  .description("execute the given remote cmd")
  // 没用,option和command是冲突的
  .option("-e, --exec_mode <mode>", "Which exec mode to use")
  // 执行的操作
  .action((cmd, env, options) => {
    // 参数可以拿到
    console.log(`env is ${env}`);
    console.log('exec "%s" using %s mode', cmd, options.exec_mode);
  })
  // 自定义help信息
  .on("--help", function() {
    console.log("自定义help信息");
  });

// 参数长度不够, 打印帮助信息
if (!process.argv.slice(2).length) {
  program.outputHelp();
}

if (program.types) {
  console.log(program.types);
}

// 解析命令行参数
program.parse(process.argv);

文档上基本都写明白了,但是有几个需要注意的点:

  1. 它主要提供 options 和 commands 两种操作,option 就是形如“-t,--types”这样的传参,commands 就是形如“exec”这样的传参。 不要混用两者 。
  2. 读取 commands 中传入的参数,写在 .action  中;读取 options 传入的参数,是通过访问 program  上的变量。除此之外,options 操作需要执行  .parse(process.argv) 解析命令行参数
  3. -V  和 -h  默认也是提供的,但是也可以通过自定义覆盖
  4. 一般都把 options 写在前面, 顺便标识版本号 ;把 commands 写在后面;最后会判断一下参数长度,不够会自动输出打印信息

 

posted @ 2020-09-28 16:15  Aina001  阅读(500)  评论(0)    收藏  举报