【转载于】https://www.bilibili.com/read/cv4964252/
命令行交互工具Inquirer
它有几个特点:
提供错误反馈
询问问题
解析输入
验证答案
管理分层提示
安装
npm install inquirer
使用格式
var inquirer = require(‘inquirer’);
//inquirer.prompt(questions) -> promise
inquirer.prompt([参数]).then(answers => {
// 你的逻辑
});
采用promise方式处理回调,参数是一个数组,数组的元素是对象(按照规范定义即可)
看一个简单的示例:
图1
我们运行一下,结果如下:
图2
这个示例可以看到当前是个确认型的会话、默认值是false(也就是不输入任何值直接回车时)。
输入的参数
下面我们来具体看下question对象内都有哪些key、这些key的具体含义有哪些?
1、type(String) :会话的类型、默认是input、当然还支持以下这些:
(1)input(用户输入型)
图3
(2)confirm(确认会话型)
图4
(3)list(无序列表型)
图5
(4)rawlist(有序列表型)
图6
(5)expand(扩展列表)
图7
(6)checkbox(勾选型)
图8
(7)password(输入密码型)
图9
(8)editor(编辑型)回车开启你的编辑器进行编辑答案
图10
2、name(String) : 当存储答案时,name作为答案的key值 一一映射
图11
3、message(String|Function):问题的题目描述,当message是function类型时,第一个参数是前面所有问题会话的答案(key/value展示)
图12
4、default(String|Number|Array|Function) :答案的默认值,也就是不输入任何值直接回车时的默认值,当default是function类型时,第一个参数是前面所有问题会话的答案(key/value展示)
5、choices(Array|Function): 当choices是function类型时,第一个参数是前面所有问题会话的答案(key/value展示),返回一个数组,数组內的可以是简单的string也可以是object,还可以是separator
图13
6、validate(Function) :校验用户输入参数的方法,回调函数內传递两个参数,第一个是用户输入的参数,第二个是之前所有会话的答案,校验通过返回true,未通过返回错误提示。
图14
7、filter(Function) :对用户输入的答案,经过处理后返回
图15
8、when: (Function, Boolean):当满足函数内的条件时,当前问题才能出现,返回值是Boolean值,函数的参数是之前所有会话的答案
图16
9、pageSize:(Number):可视区域內选项的个数,适用于type为list、rawList、expand or checkbox,通过键盘上下尖头来查看更多选项。
图17
运行一下,结果如下:
图18
10、prefix:添加message前缀信息
11、suffix:添加message后缀信息
图19
运行一下,结果如下:
图20
分隔符
new inquirer.Separator() 分隔符可以加在choices 的数组中
看一个例子:
图21
运行一下:
图22
底部的文案输出
var ui = new inquirer.ui.BottomBar();
//简单的输出信息:
ui.log.write(‘something just happened.’);
//可以使信息固定屏幕最后输出
ui.updateBottomBar(‘new bottom bar content’);
看一下例子:
图23
运行结果如下:
图24
监听回答
inquirer.prompt(prompts).ui.process.subscribe(
onEachAnswer,
onError,
onComplete
);
总结
inquirer也是一个开发命令行的神器,配合上之前的commander等工具基本上可以覆盖大部分场景!如果之前注意过,你会发现机会所有的好的命令行工具都有它们的身影,比如vue的命令行工具!inquirer相对commander来说比较简单,所以本文主要以示例展示为主,没有太多需要理解的地方。如果你看到了这里,说明你差不多已经学会了,那就赶紧去写一个吧,让你的领导和同事对你刮目相看! 作者:做前端的蜗牛 https://www.bilibili.com/read/cv4964252/ 出处:bilibili
- 本文固定链接: http://madong.net.cn/index.php/2022/11/673/
- 转载请注明: 管理员 于 小东 发表