inquirerjs 是什么
Inquirer 是常规交互式命令行用户接口的集合,提供给 Node.js 一个方便嵌入,漂亮的命令行接口。 Inquirer 会简化询问终端用户问题,解析,验证答案,提供错误反馈等等功能。 Inquirer基于诺言的npm软件包,用于Node项目中,以创建用于基于查询的任务的CLI(命令行界面)工具。 询问用户问题,验证用户输入并根据给定的响应进行操作非常好。
通俗来讲就是它帮助我们实现与用户的交互式交流,比如给用户提一个问题,用户给我们一个答案,我们根据用户的答案来做一些事情
它有以下特色:
- 提供错误回调
- 可以提出问题
- 解析输入的答案
- 验证答案
- 管理分层提示
文档
安装
npm i -S inquirer
使用
var inquirer = require('inquirer');
inquirer
.prompt([
])
.then(answers => {
});
简单功能参数介绍
- type:表示提问的类型,包括:input、confirm、 list、rawlist、expand、checkbox、password、 - editor。
- name: 存储当前输入的值。
- message:问题的描述。
- default:默认值。
- choices:列表选项,在某些type下可用,并且包含一个分隔符(separator);
- validate:对用户的回答进行校验。
- filter:对用户的回答进行过滤处理,返回处理后的值。
- when:根据前面问题的回答,判断当前问题是否需要被回答。
- pageSize:修改某些type类型下的渲染行数。
- prefix:修改message默认前缀。
- suffix:修改message默认后缀。
方法
inquirer.prompt(questions, answers) -> promise
启动提示界面(查询会话)
inquirer.registerPrompt(name, prompt)
注册一个提问类型插件
inquirer.createPromptModule() -> prompt function
创建一个独立的查询器模块。如果您不想在覆盖或添加新提示类型时影响也依赖查询器的其他库。
案例
普通用法
prompt()里面的参数即问的问题,在终端中都会一一列出来.then里面的answer就是用户输入的答案,如果没有输入的话就默认default里面的数据
const inquirer = require("inquirer");
const question = [
{
type:"input",
message:"你的职业是",
name:"occupation",
default:"养猪"
}
]
inquirer.prompt(question ).then(answer=>{
console.log(answer);
});
let answer = await inquirer.prompt(question)
console.log(answer )
以下案例只更改prompt里面的参数,注意name千万不要重复哦
多次输入 input
const question = [{
type: "input",
message: "你的职业是",
name: "occupation",
default: "养猪"
},
{
type: "input",
message: "你的收入是多少",
name: "income",
default: 10000
},
]
校验 validate
const question = [
{
type: "input",
message: "你的收入是多少",
name: "income",
default: 10000,
validate: (val) => {
if (val > 1000) {
return true
} else {
return "我不信你这么穷";
}
}
},
]
数字 number
const question = [
{
type:"number",
message:"请输入数字",
name:"num"
}
]
密码 password
[
{
type:"password",
message:"请输入密码:",
name:"pwd"
}
]
确认confirm
confirm的话,默认是一次运行,当前问答是否运行取决于when里面的条件,如下代码,如果status的答案是false,answer.status为false,power则不会展示出来
const question = [
const question = [ {
type:"confirm",
message:"你队现状是否满意,选择'n'就结束问卷了哦",
name:"status",
default:true
},
{
type: "confirm",
message: "你的动力是什么",
name: "power",
suffix: "T_T",
prefix:"^_^",
when: function(answer) {
return answer.status
}
}]
]
选项组 list /rawlist/expand
const question = [
{
type:"list",
message:"请选择一个版本:",
name:"plugin",
default:"vue2.x",
choices:[
"vue2.x",
"vue3.x"
],
pageSize:2,
filter: function (val) {
return `您选择了`+ val;
}
}
]
const question = [
{
type:"expand",
message:"请选择一个版本:",
name:"plugin",
default:"vue2",
choices:[
{key:'2',value:"vue2"},
{key:'3',value:"vue3"},
]
}
]
多选 checkbox
const question = [
{
type:"checkbox",
message:"选择水果",
name:"Fruits",
choices:[ "苹果", "香蕉", "栗子", ]
}
]
const question = [
{
type:"checkbox",
message:"选择水果",
name:"Fruits",
choices:[
{ name : "苹果" },
new inquirer.Separator(),
{ name : "香蕉" },
{ name : "栗子" },
{ name : "梨子" },
],
pageSize:2,
}
]
编辑器 editor
[
{
type:"editor",
message:"按回车调出编辑器,关闭编辑器的时候会打印出输入的内容",
name:"editor"
}
]
|