inquirer 终端中和用户交互
title: inquirer 终端中和用户交互 id: 43e015160664fac475dadee44b46afdf tags: [] date: 2000/01/01 00:00:00 updated: 2023/03/04 19:29:12 isPublic: true --#|[分隔]|#--
inquirer 终端中和用户交互
普通开发时并不需要,但有些时候,比如开发了一个脚手架,需要在生成项目时,询问用户这个项目的名称、选用的插件、是否启用某项功能,这些时候就必须要和用户有一些交互了。
inquirer 就是比较好的一项交互工具,下面是他的主要功能。
基本使用
安装:
npm install inquirer基本使用:
const inquirer = require('inquirer');
;(async () => {
// 基本用法,传入对象数组,每个对象都是一次提问,按顺序提问
let answers = await inquirer.prompt([
{
type: 'input', // 提示的类型,是 input 输入框
message: '设置一个用户名:', // 要展示的问题提示
name: 'name', // 用于存放用户回答的字段名
default: '小明', // 默认值
},
{
type: 'input', // 提示的类型,是 input 输入框
message: '输入第二个名字:', // 要展示的问题提示
name: 'name2', // 用于存放用户回答的字段名
default: '大明', // 默认值
},
])
// 在 answers 中获取用户应答对象
console.log(answers) // { name: '小明', name2: '大明' }
})()效果:

数组中每个对象,都是一个问题对象,问题对象中有以下字段:
下面开始使用具体例子来讲解。
input 输入字符串和输入校验
用于用户输入回车后,进行值的校验,不输入符合规则的值,就会一直卡住。
效果:

number 输入内容自动转数字类型
和 input 类似,只不过这个会把输入的内容自动转为数字。
如果输入的是个非数字,或者无法转成数字,值会变成 NaN。
confirm 询问是否同意
打印一个询问,用户响应 y 或者 n,来拿到 bool 值。
效果:

list 单选列表
提供一个列表给用户,用户使用上下箭头切换,回车选中。
效果:

注意:出现备选列表时,列表的多种书写形式
这里插播一条关键点,所有类似 type: "list " 这种需要提供备选列表的问题对象,它提供数组的那一项(大多是 choices 这个字段),可以是字符串数组,也可以是对象数组。
choices 是字符串数组时,default 指定默认值、最终拿到的,都是数组中某一项。
choices 是对象数组时,对象中必须要有 name 字段,作用和字符串数组中的字符串一样。
如果对象还有 value 字段,那 name 字段只用作用户选择时的 label 提示最终值以 value 为准。
如以下例子中的两种方式:
rawlist 同list,但提供输入序号快捷选择
当 list 列表过于庞大,上下切换太慢,可以提供这种方式,用户可以直接通过输入数字的方式,快速切换。
但最终拿到的对象中的值,仍然是数字中的选项。
效果:

checkbox 多选
上下移动箭头,使用空格键切换是否选中。
效果:

password 输入隐藏形式的密码
输入密码时,输入的字段不会实时打印
效果:

editor 启用 vim 编辑器进行长文本输入
偶尔需要用户输入大篇幅需要换行的内容,比如常见的比如 git merge 时,出了不自动合并的冲突,就会出现一个编辑器,让编写信息。
这里也可以:
效果:

expand 自定义字母作为选择(不建议使用)
也是展示列表供用户选择,但用户交互不太友好,用户不容易懂。
效果:

Last updated
Was this helpful?