Enquirer 是一款在终端环境下使用的交互式命令行界面(CLI)工具,可用于构建与用户进行交互的命令行应用程序。它是一个基于 Inquirer.js 的高级库,支持多种提示类型和定制选项。
安装 Enquirer
你可以通过 npm 来安装 Enquirer:
npm install enquirer
使用 Enquirer
使用 Enquirer 构建交互式命令行应用程序的过程非常简单。下面是一个例子:
-- -------------------- ---- ------- ----- - ------ - - -------------------- ----- --------- - - - ----- -------- ----- ----------- -------- ----- -- ---- ---------- -- - ----- ----------- ----- ----------- -------- ----- -- ---- ---------- -- - ----- --------- ----- -------- -------- ----- - ------- -------- ------- -------- ------- - -- ----------------- ------------- -- --------------------- ----------------------
这个应用程序将提示用户输入他们的用户名和密码,并让他们从一个颜色列表中选择一个颜色。
运行上面的代码,你会看到类似下面的输出:
{ username: 'johndoe', password: '**********', color: 'blue' }
通过这种方式,你可以在命令行应用程序中与用户进行交互,获取他们的输入并执行相应的操作。
Enquirer 的提示类型
Enquirer 支持多种提示类型,包括输入、选择、密码等。下面是一些常用的示例:
输入 (input)
使用 input
类型可以让用户输入任何文本,例如用户名或电子邮件地址。
{ type: 'input', name: 'username', message: 'What is your username?' }
密码 (password)
使用 password
类型可以让用户输入密码。输入的内容将以星号(*)显示。
{ type: 'password', name: 'password', message: 'What is your password?' }
单选 (select)
使用 select
类型可以让用户从一个预定义的选项列表中选择一个选项。
{ type: 'select', name: 'color', message: 'Pick a color', choices: ['red', 'green', 'blue'] }
多选 (multiselect)
使用 multiselect
类型可以让用户从一个预定义的选项列表中选择多个选项。
{ type: 'multiselect', name: 'colors', message: 'Pick colors', choices: ['red', 'green', 'blue'] }
确认 (confirm)
使用 confirm
类型可以让用户确认一个问题。用户可以回答“是”或“否”。
{ type: 'confirm', name: 'confirmed', message: 'Are you sure?' }
Enquirer 的选项
除了提示类型外,Enquirer 还支持许多其他选项,如默认值、校验器等。下面是一些常用的示例:
默认值 (default)
你可以使用 default
选项来提供一个默认值,当用户没有输入任何内容时会被使用。
{ type: 'input', name: 'username', message: 'What is your username?', default: 'johndoe' }
校验器 (validate)
你可以使用 validate
选项来验证用户输入的内容是否符合要求。如果不符合,你可以在错误消息中提供详细的说明。
-- -------------------- ---- ------- - ----- -------- ----- -------- -------- ----- -- ---- ----- ---------- --------- --------------- - -- --------------------------- - ------ ------- ----- - ----- ----- --------- - ------ ----- - ----------------------------------------------------------- -------- ----------------------------------------------------------------------------------