Commander.js
commander.js 是node.js命令行界面的完整解决方案
参考材料:
[Commander.js 的官方文档 ] (http://tj.github.io/commander.js/)
中文文档翻译
github
简书
1. 安装
- npm install commander
2. 声明 program 变量
-
JS
直接引入对象
const { program } = require(‘commander’);
program.version(‘0.0.1’); -
Typescript
// index.ts
import { Command } from ‘commander’;
const program = new Command();
3. 选项
Commander 使用.option()方法来定义选项,同时可以附加选项的简介。每个选项可以定义一个短选项名称(-后面接单个字符)和一个长选项名称(–后面接一个或多个单词),使用逗号、空格或|分隔。
program
.option(‘-e | --env’,‘from which env!’)
解析后的选项可以通过Command对象上的.opts()方法获取,同时会被传递给命令处理函数。可以使用.getOptionValue()和.setOptionValue()操作单个选项的值。
program
.option('-e | --env','from which env!');
program.parse()
console.log(program.opts()) // {env: dev}
console.log(program.getOptionValue('env')) // dev
program.usage('hello world')
.option('-fe, --from_env <value>', 'specify from which dynamoDB table')
program.parse(process.argv);
3.1. 常用选项类型,boolean 型选项和带参数选项
有两种最常用的选项,一类是 boolean 型选项,选项无需配置参数;另一类选项则可以设置参数(使用尖括号声明在该选项后,如–expect )。如果在命令行中不指定具体的选项及参数,则会被定义为undefined。
program
.option('-d, --debug', 'debug is boolean')
.option('-t, --type <type>', 'type have value');
3.2 选项的默认值
选项可以设置一个默认值。
program
.option('-t, --type <type>', 'the type is', 'typeA');
program.parse();
3.3. 其他的选项类型,取反选项,以及可选参数的选项
可以定义一个以 no- 开头的 boolean 型长选项。在命令行中使用该选项时,会将对应选项的值置为 false。当只定义了带 no- 的选项,未定义对应不带 no- 的选项时,该选项的默认值会被置为 true。
如果已经定义了 --foo,那么再定义 --no-foo并不会改变它本来的默认值。可以为一个 boolean 类型的选项指定一个默认的布尔值,在命令行里可以重写它的值。
program
.option('--no-A', 'Remove A')
.option('--B <type>', 'type1', 'type2')
.parse();
3.4. 必填选项
通过.requiredOption()方法可以设置选项为必填。必填选项要么设有默认值,要么必须在命令行中输入,对应的属性字段在解析时必定会有赋值。该方法其余参数与.option()一致。
program
.requiredOption('-t, --type <type>', 'type must be had');
program.parse();
3.5. 变长参数选项
定义选项时,可以通过使用…来设置参数为可变长参数。在命令行中,用户可以输入多个参数,解析后会以数组形式存储在对应属性字段中。在输入下一个选项前(-或–开头),用户输入的指令均会被视作变长参数。与普通参数一样的是,可以通过–标记当前命令的结束。
program
.option('-n, --number <numbers...>', 'specify numbers')
.option('-l, --letter [letters...]', 'specify letters');