Skip to content

npm commander 命令行工具

javascript
const { Command } = require("commander");

const program = new Command();
program
  .name("自定义命令行")
  .usage("[gg oo] cc")
  .version("0.0.0.1")
  .description("<<<<<<<<<<")
  .option("-a")
  .option("--b")
  .option("-c --color")
  .option("-d --des", "aaaaa")
  .option("-n --name <app-name>", "aaappp nnn")
  // .requiredOption("-m <m-name>", "abc") //必填
  .option("-e <e...>", "eee")
  .option("-f [f...]", "")
  .option("-g1 <g...>", "", (...props) => console.log("参数预处理1:", props))
  .option("-g2 <gg>", "", (...props) => console.log("参数预处理2:", props));

// program
//   .command("create <app-name> [version]")
//   .usage("?FA?FA?SE?F")
//   .description("创建一个项目")
//   .action((AppName, version) => {
//     console.log("action  create <app-name>:", AppName, version)
//   })

program.parse(process.argv);
console.log("1==>", program.opts());
  • name( string )

命令行的标题

  • usage( string )

紧跟在标题后方的 使用方法 的提示

  • version( string )

输入的版本号

  • description( string )

如果有,会在标题隔行显示介绍文字

  • option( key, des, fn | other )

命令行选项的每一项

  • key 单条横线为短选项,选中后对应的 key 变为 true
  • -key 两条横线为长选项,选中后对应的 key 变为 true
  • k1 --k2 有长有短最终结果的 key 会被定为成长选项
  • k1 --k2 [<arg...> | [arg...] ] 方括号中为可选参数列表,如果有则是最终 key 的值,没用参数但是执行了则默认为 true
  • k1 --k2 [<arg> | [arg] ] 不加...表示必须有参数
  • des 为该选项的描述,在使用帮助是能看到
  • fn | other 该选项如果非函数则是默认值,如果是函数则是预处理
  • requiredption

于 option 一样都是选项,这个表示必须选

  • command

参数和 programe 一模一样,可以理解成分组。如果使用了分组则会另外侧的 programe 失效

  • ... 如果上述参数
  • name( title + arguments ) 和上边不一样在于,这里除了声明标题 还要声明用法,格式同 usage
  • action( ...arg ) 采用 command 命令的选项最终会进到这里,参数为在 name 中声明的参数