commander
本文档主要是要针对需要开发脚手架进行使用的前端开发人员所参考的文档,commander是用于脚手架开发经常使用的插件。当我们在终端或者cmd框内输入命令时,这个插件就是方便我们对于这些指令做一些处理。
快速开始
安装:
npm install commander
// 使用
// cjs commander v8之前
const program = require('commander')
// cjs commander v9版本之后,v9版本之后也可使用v8之前的,不过会有一些方法不能使用
const { program } = require('commander')
// mjs(ecmascript) ts版本
import { program } from 'commander';
// 以cjs为开发环境 为例子,下面就是一个upload的指令,环境是node运行
#! /usr/bin/env node
const { program } = require('commander')
program
.command('upload <file>')
.option('-p, --port <number>', 'port number', 80)
.action((file, options) => {
console.log(program)
if (program.opts().progress) console.log('Starting upload...');
console.log(`Uploading ${file} to port ${options.port}`);
if (program.opts().progress) console.log('Finished upload');
});
program.parse();
option(选项)
// 下面是option的基本使用
program
.option('选项名称,可短可长', '选项的描述', '默认值')
// 选项名称形式 '-, --'可以一个短字节或者一个长字节,下面以help为例子:
program
.option('-h, --help')
// 上面的例子,就是简单的说明选项名称形式
// 选项的描述,就是输入之后给对应的提示
program
.option('-h, --help', 'help viewing other commands and their options')
// 选项的参数,一般选项都是boolean,但是也还是可以其他类型,例如:Number,String,请看下面例子
program
.option('-h, --help', 'help viewing other commands and their options', 1)
program
.option('-h, --help', 'help viewing other commands and their options', 'help')
program
.option('-h, --help', 'help viewing other commands and their options', 'help')
// 带参数选项,这种型式,默认的值就是代表a的值
program
.option('-s --save-a <a>', 'it is a port', 80)
// 设置选项必填,这种情况就是,执行命令的时候,该选项就必须有,不然会报错,如果没有,就使用选项默认的值
program
.requiredOption('-s --save-a <a>', 'it is a port', 80)
注意:
- 长短形式之间可以使用:半角逗号 空格, 或者 ==|==进行分割
- 多个短词的选项,会转换成驼峰命令法。例子:–port-number,取值时,portNumber
- 选项的值,默认是false,属于boolean型
- – 英文的双短横,表示选项结束,后面的参数均不会被使用,也不会被命令解释
- 选项对顺序没有太大的要求,只要当前命令使用到了当前选项,都会找到对应的选项,并对该选项做对应的值改变
- 命令中,选项和选项参数可以写在一起,可以空格分开,可以 = 链接
- 使用program.opts()可以获得你定义的选项并得到它对应的值
- 多个boolean型的 短行选项,可以写在一起。例子,-f,-b,-d简写成: -fbd。如果是带参数的的选项,请将该选项放到最后面,依然可以将参数放进去。
- 选项参数不固定,可以使用…进行表示。option(‘-n, --number <numbers…>’, ‘specify numbers’)
command(指令)
指令的方法有两个: command,以及addCommand
program
.command(clone <source> [destination])
.description('clone a repository into a newly created directory')
.action((source, destination) => {
console.log('clone command called');
})
// 下面是使用addCommand() 方法添加子命令
function makeHeatCommand() {
const heat = new commander.Command('heat');
heat
.command('jug')
.action(() => {
console.log('heat jug');
});
heat
.command('pot')
.action(() => {
console.log('heat pot');
});
return heat;
}
// 这种方式都是配置好的命令,而不是使用command()进行单个加
program.addCommand(makeHeatCommand());
注意:
- command 接收的第一个参数,都是命令名称。
- 命令的参数。都是跟在名称的后面,可使用’‘,’[option]‘,’[option…]’
- 命令的参数除了上面的声明方式,还可以使用.arguments()方法进行声明。
- description 这个方法是对当前的命令进行的描述
version(版本)
和option使用很相似,也是三个参数,但第一个参数是对应的版本号,第二个参数才是选项,第三个参数是描述。指令是内置的,因此,可以直接写对应的版本号即可。
// 直接写的版本号
program
.version('1.0.0')
// 动态版本,其中,package.json 是对应的项目的package.json
program
.version(`${require('./package.json').version}`)
本周暂时更新以上三个的用法说明,后续会持续更新该文档。。。
后续更新的文档