Inquirer.js 项目介绍
Inquirer.js 是一个旨在简化命令行交互的工具集合。它提供了一系列常见的交互式命令行用户界面,能够帮助开发者在命令行中创建更直观的互动体验。
项目的基本背景
Inquirer.js 是一个开源项目,由 Simon Boudrias 创建,并且在社区中备受欢迎。它已经完成了一次重写,目标是减少包的体积和提升性能。这个工具库不仅支持常见的输入类型,还允许用户创建自定义提示。
安装方法
开发者可以通过 npm 或者 yarn 安装 Inquirer.js:
-
使用 npm:
npm install @inquirer/prompts
-
使用 yarn:
yarn add @inquirer/prompts
值得注意的是,在这个重写版本之外,Inquirer.js 还有之前的版本,这个版本虽然不再被积极开发,但仍然受到维护,并且包含许多社区贡献的提示。
使用示例
要使用 Inquirer.js,开发者仅需从 @inquirer/prompts
导入所需的提示,并调用相应的函数。以下是一个简单的例子:
import { input } from '@inquirer/prompts';
const answer = await input({ message: 'Enter your name' });
内置提示类型
Inquirer.js 提供了多种内置提示,开发者可以根据需求进行选择:
- Input 输入:用于接收用户的文本输入。
- Select 选择:提供一个供用户选择的选项列表。
- Checkbox 复选框:允许用户进行多选。
- Confirm 确认:用于简单的确认或取消操作。
- Search 搜索:提供搜索功能的选择列表。
- Password 密码:用于隐藏用户输入的功能,只显示字符替代。
- Expand 扩展:提供一个可以扩展的选择列表。
- Editor 编辑器:启动用户偏好的编辑器用于输入内容。
- Number 数字:用于接收和验证数字输入。
- Raw List 原始列表:提供一个原始的选项输入。
高级用法
Inquirer.js 的提示函数接受两个参数:提示配置和上下文配置。开发者可以自定义输入输出流、是否在提示终了后清屏,以及通过 AbortSignal
进行异步取消等功能。例如:
import { confirm } from '@inquirer/prompts';
const allowEmail = await confirm(
{ message: 'Do you allow us to send you email?' },
{
output: new Stream.Writable({
write(chunk, _encoding, next) {
// 进行一些操作
next();
},
}),
clearPromptOnDone: true,
},
);
社区扩展与自定义
Inquirer.js 还支持社区贡献的自定义提示类型,开发者可以将自己的创意扩展到这个项目中。此外,所有的 prompt 函数返回的都是可取消的 promise,允许更高级的交互方式。
Inquirer.js 的设计理念是使命令行交互简单化,开发者可以轻松引入到自己的项目中,以提升用户交互体验。无论是简单的输入框还是复杂的多选列表,Inquirer.js 都能为开发者提供便利的解决方案。