项目介绍:Prompts
项目简介
Prompts 是一个轻量级、美观且用户友好的交互式提示库,旨在帮助开发者通过命令行获取用户输入信息。它基于 Node.js 环境,适用于 Node 14 及以上版本。它不仅简单易用,而且非常灵活,支持多种输入类型,让用户在命令行界面中获得一致且流畅的体验。
特点
- 简单:Prompts 没有大型依赖,也不被拆分成许多小模块。
- 用户友好:通过合理的布局和配色,提供美观的命令行界面。
- 基于 Promise:使用 promises 和
async
/await
以避免回调地狱。 - 灵活:各个提示都是独立的,可以单独使用。
- 可测试:支持编程自动提交答案,便于测试。
- 统一性:提供一致的用户体验。
安装方法
要在您的项目中使用 Prompts,只需在命令行中运行以下命令:
npm install --save prompts
如何使用
基本用法如下:
const prompts = require('prompts');
(async () => {
const response = await prompts({
type: 'number',
name: 'age',
message: '你多大了?',
validate: value => value < 18 ? `夜店仅限18岁以上` : true
});
console.log(response); // 输出用户输入的年龄
})();
示例
单个提示
下面是一个简单的例子,询问用户关于生命意义的问题:
const prompts = require('prompts');
(async () => {
const response = await prompts({
type: 'text',
name: 'meaning',
message: '生命的意义是什么?'
});
console.log(response.meaning);
})();
提示链
如果需要连续询问多个问题,可以使用提示链。每个问题都需要一个唯一的 name
属性:
const prompts = require('prompts');
const questions = [
{
type: 'text',
name: 'username',
message: '你的 GitHub 用户名是什么?'
},
{
type: 'number',
name: 'age',
message: '你多大了?'
},
{
type: 'text',
name: 'about',
message: '简单介绍一下你自己',
initial: '我为什么要介绍?'
}
];
(async () => {
const response = await prompts(questions);
// 将返回 { username, age, about }
})();
动态提示
可以根据先前响应的结果动态调整后续问题:
const prompts = require('prompts');
const questions = [
{
type: 'text',
name: 'dish',
message: '你喜欢披萨吗?'
},
{
type: prev => prev === '披萨' ? 'text' : null,
name: 'topping',
message: '说出一个配料'
}
];
(async () => {
const response = await prompts(questions);
})();
API 概述
Prompts 的 API 提供丰富的配置选项,允许开发者自定义提示的行为、默认值和展示方式。使用 options 可以进一步自定义每个 prompt 的行为,例如 onSubmit
和 onCancel
回调。
授权和致谢
Prompts 是依据 MIT 许可协议发布的,其灵感来自于 derhuerst。项目由 Terkel Gjervig 编写。