【常用的Npm包】commander

学习vue-cli源码的那个作者建议啃码之前学一下这些常用的npm包,于是我开始了啃包之路。

去看了github才知道这个包的作者好牛逼啊,网上说学node基本离不开他哈哈哈。

在我们使用vue-cli,我们在控制台

  • 输入vue --version或者vue -v时就会出现当前的版本号;
  • 输入vue --help或者vue -h就会出现可以使用的命令;
  • 根据vue -help我们得知可以运行vue createvue ui等。

以上这些操作都是源自于在vue-cli在实现的过程中,使用了commander这个包。

commander可以让node命令更加简单,提供了用户命令行输入和参数解析等强大功能。

安装

yarn add commander --dev

使用

在文件夹新建index.js

const { program } = require('commander');
program.version('0.0.1');
program.parse(process.argv);

在命令行中执行node index.js -v即会答应出当前的版本号为0.0.1

常用功能解析

  1. 用户输入命令行的时候需要借助-或者--来实现:
node index.js -v              # -代表简写
node index.js -v -a -b
node index,js -vab            ## 可以合并多个简写命令
node index.js --version       ## --代表全称
node index.js --version  hello  ## 命令携带了参数hello
  1. 添加命令行可以使用.option
const { program } = require('commander');
program
  .version('0.0.1')
  .option('-d, --debug', 'output extra debugging');
program.parse(process.argv);

输入node index -d或者node --debug都属于同一条命令。-代表命令简写,--代表命令全称。

  1. 获得当前用户输入的命令.opts()
const { program } = require('commander');
program
  .version('0.0.1')
  .option('-d, --debug', 'output extra debugging');
program.parse(process.argv);
const options = program.opts();
if (options.debug) console.log(options);     // { debug: true }
  1. 设置带有参数的命令:
const { program } = require('commander');
program
  .version('0.0.1')
  .option('-d, --debug', 'output extra debugging')
  .option('-p, --pizza-type <type>', 'flavour of pizza');

program.parse(process.argv);

const options = program.opts();
if (options.debug) console.log(options);
console.log('pizza details:');
if (options.pizzaType) console.log(`- ${options.pizzaType}`);

如果输入node index.js -p会报错,因为需要在后面加入参数,例如:node index.js -p vegetarian

  1. 默认值
const { program } = require('commander');
program.option('-p, --pizza-type <type>', 'flavour of pizza', 'blue');

program.parse(process.argv);

const options = program.opts();
console.log(`cheese: ${options.cheese}`); // blue
  1. 取反选项: 使用--no开头的命令,如果用户输入的时候没有它,默认是true;否则是false
const { program } = require('commander');
program.option('--no-book', 'remove book');

program.parse(process.argv);

const options = program.opts();

// 执行node index.js ,输出 book: true
// 执行node index.js --no-book,输出 book: false
console.log(`book: ${options.book}`); 
  1. 可选参数
const { program } = require('commander');
// 参数必填
// program.option('-p, --pizza-type <type>', 'flavour of pizza', 'blue');
// 可选参数
program.option('-p, --pizza-type [type]', 'flavour of pizza', 'blue');

program.parse(process.argv);

const options = program.opts();
console.log(`cheese: ${options.cheese}`); // blue
  1. 长度可变的参数
const { program } = require('commander');
// 参数必填
// program.option('-p, --pizza-type <type...>', 'flavour of pizza', 'blue');
// 可选参数
program.option('-p, --pizza-type [type...]', 'flavour of pizza', 'blue');

program.parse(process.argv);

const options = program.opts();
console.log(`cheese: ${options.cheese}`); 
  1. 查看当前可以用的命令

    当我们添加了多个option之后,就可以直接输入node index.js --help,直接会输出多个.option定义的命令了。

Usage: index [options]

Options:
  -d, --debug  output extra debugging
  --no-book    remove book
  -h, --help   display help for command

更多配置项参考文档: commander
啊,单纯看英语文档真的要命啊,但是中文文档看着也好变扭啊。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值