inquirer.js 基本用法
什么是 inquirer.js
inquirer.js
是一个用来实现命令行交互式界面的工具集合。它帮助我们实现与用户的交互式交流,比如给用户提一个问题,用户给我们一个答案,我们根据用户的答案来做一些事情。
它包含以下功能:
- 可以向用户提出问题
- 解析用户输入的答案
- 对用户的输入进行验证
- 提供错误回调
安装
代码语言:javascript复制npm i inquirer -S
使用
代码语言:javascript复制// 引入 inquirer
const inquirer = require('inquirer');
// 启动 inquirer
inquirer
// 交互内容
.prompt([
])
// 收集用户答案后的回调,会以键值对的方式存储在这里
.then((answers) => {
})
// 捕获错误的回调
.catch((error) => {
});
default
,choices
,validate
,filter
以及when
的值为函数时,可以异步调用,也可以返回一个Promise
或者使用this.async()
方法来获得一个回调,然后使用最终值来调用它。
{
filter() {
return new Promise();
},
validate: function (input) {
var done = this.async();
setTimeout(function() {
if (typeof input !== 'number') {
done('You need to provide a number');
return;
}
done(null, true);
}, 3000);
}
}
属性
这里暂时只做介绍,后面会结合代码演示所有属性的使用方法。
type
表示提问的类型,包括:
- input
- number
- confirm
- list
- rawlist
- expand
- checkbox
- password
- editor
name
存储当前问题回答的变量;
message
问题的描述;
default
默认值;
choices
列表选项,在某些 type
下可用,并且包含一个分隔符( separator
);
validate
对用户的回答进行校验,只有返回 true
的时候才会向下进行;
filter
对用户的回答进行过滤处理,返回处理后的值,会修改用户提交的值;
transformer
对用户回答的显示效果进行处理(如:修改回答的字体或背景颜色),但不会影响最终的答案的内容;
when
根据前面问题的回答,判断当前问题是否需要被回答;
pageSize
修改某些 type
类型下的渲染行数;
prefix
修改 message
默认前缀;
suffix
修改 message
默认后缀;
mask
修改 type
为 password
时的显示模式。
交互类型
input
输入交互,完整代码如下,但是我会一个个属性的添加进行演示。
代码语言:javascript复制inquirer
.prompt([
{
type: 'input',
message: '请输入姓名',
name: 'name',
default: '一尾流莺',
validate: (answer) => {
if (answer.length < 2) {
return '名字不可以少于两个字符';
}
console.log();
return true;
},
transformer: (a) => {
return `最帅的人是 : ${a}`;
},
filter: (a) => {
return `最帅的人是 : ${a}`;
},
prefix: '