# Commander

/* index.js */
cosnt { Command } = require('commander')

const program = new Command()

program
  .command('create <name>')
  .optioins('-f')
  .action(name => {
  // .do something
})

# .option()

  1. 选项名称,每个选项名称可以定义一个短名称(-optionName)和一个长名称(--longOptionName),使用**逗号、空格或者|**分割
    • 必填参数<arg>
    • 可选参数[arg],可选参数不传值则会当做boolean类型处理
    • 变长参数<arg...>或者[arg...]
program
  .option('-s, --split <char>')
  .option('-f')
  .option('-v [option]')

// node index.js -s hello -f
program.opts() // { split: hello, f: true }
  1. 描述,一般作用--help
program.option('-s, --split <char>', '这是描述')

// node index.js -h (--help)
'-s, --split 这是描述'
  1. 默认值,需要选项不能为 boolean
program.option('-s, --split <char>', '这是描述''default')

// node index.js
program.opts() // { split: default }

# .version()

  • 设置版本号
program.version('1.0.1')

// node index.js -V => 1.0.1

# command()

  • 添加命令
    • 可以使用模板字符串添加
    • 可以使用.argument()单独指定
// 使用模板字符串
program.command('create <name> [opt]', '可选的说明').action((name, opt, options) => {})

// 使用 .argument
program
  .command('create')
  .argument('<username>', 'desc')
  .argument('<list...>', 'desc')

# action()

  • 处理函数
program.action((...args: any[], options) => void)