inquirer@8.2.6 README 翻译


以下内容为chatgpt翻译
内容取自: https://www.npmjs.com/package/inquirer/v/8.2.6

Inquirer Logo

Inquirer.js

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

一个常见的交互式命令行用户界面集合。

目录

  1. 文档
    1. 安装
    2. 示例
    3. 方法
    4. 对象
    5. 问题
    6. 答案
    7. 分隔符
    8. 提示类型
  2. 用户界面和布局
    1. 响应式界面
  3. 支持
  4. 已知问题
  5. 新闻
  6. 贡献
  7. 许可
  8. 插件

目标和理念

Inquirer.js 力求成为一个易于嵌入和美观的命令行界面工具,适用于 Node.js(也许是“CLI Xanadu”)。

Inquirer.js 应该简化以下过程:

  • 提供 错误反馈
  • 提问
  • 解析 输入
  • 验证 答案
  • 管理 层级提示

注意: Inquirer.js 提供用户界面和询问会话流。如果你在寻找一个完整的命令行程序实用工具,请查看 commandervorpalargs

文档

安装

npm install inquirer
var inquirer = require('inquirer');
inquirer
  .prompt([
    /* 在这里传递你的问题 */
  ])
  .then((answers) => {
    // 使用用户反馈做任何事情
  })
  .catch((error) => {
    if (error.isTtyError) {
      // 当前环境无法渲染提示
    } else {
      // 发生了其他错误
    }
  });

示例 (运行并查看)

查看 packages/inquirer/examples/ 文件夹中的代码和界面示例。

node packages/inquirer/examples/pizza.js
node packages/inquirer/examples/checkbox.js
# 等等...

方法

inquirer.prompt(questions, answers) -> promise

启动提示界面(询问会话)

  • questions (数组) 包含 问题对象(使用 响应式界面,也可以传递 Rx.Observable 实例)
  • answers (对象) 包含已回答问题的值。Inquirer 会避免询问已经提供答案的问题。默认为 {}
  • 返回一个 Promise
inquirer.registerPrompt(name, prompt)

name 注册提示插件。

  • name (字符串) 新提示的名称。(用于问题的 type
  • prompt (对象) 提示对象本身(插件)
inquirer.createPromptModule() -> prompt function

创建一个自包含的 inquirer 模块。如果你不想在覆盖或添加新提示类型时影响其他依赖 inquirer 的库。

var prompt = inquirer.createPromptModule();

prompt(questions).then(/* ... */);

对象

问题


一个问题对象是一个包含相关问题值的 hash

  • type: (字符串) 提示类型。默认:input - 可能的值:inputnumberconfirm
    listrawlistexpandcheckboxpasswordeditor
  • name: (字符串) 存储答案时使用的名称。如果名称包含句点,它将在答案 hash 中定义一个路径。
  • message: (字符串|函数) 要打印的问题。如果定义为函数,第一个参数将是当前 inquirer 会话的答案。默认为 name 的值(后跟冒号)。
  • default: (字符串|数字|布尔|数组|函数) 如果没有输入,则使用的默认值,或返回默认值的函数。如果定义为函数,第一个参数将是当前 inquirer 会话的答案。
  • choices: (数组|函数) 选择数组或返回选择数组的函数。如果定义为函数,第一个参数将是当前 inquirer 会话的答案。
    数组值可以是简单的 numbersstrings,或包含 name(在列表中显示),value(在答案 hash 中保存)和 short(选择后显示)属性的 objects。选择数组还可以包含 一个 Separator
  • validate: (函数) 接收用户输入和答案 hash。应返回 true 如果值有效,否则返回错误消息(字符串)。如果返回 false,则提供默认错误消息。
  • filter: (函数) 接收用户输入和答案 hash。返回要在程序中使用的过滤值。返回的值将添加到 Answers hash 中。
  • transformer: (函数) 接收用户输入、答案 hash 和选项标志,并返回要显示给用户的转换值。转换仅影响编辑时显示的内容。它不会修改答案 hash。
  • when: (函数, 布尔) 接收当前用户答案 hash 并根据是否应询问此问题返回 truefalse。该值也可以是简单的布尔值。
  • pageSize: (数字) 更改使用 listrawListexpandcheckbox 时渲染的行数。
  • prefix: (字符串) 更改默认 前缀 消息。
  • suffix: (字符串) 更改默认 后缀 消息。
  • askAnswered: (布尔) 强制提示问题如果答案已经存在。
  • loop: (布尔) 启用列表循环。默认:true

defaultchoices(如果定义为函数)、validatefilterwhen 函数可以异步调用。可以返回一个 promise 或使用 this.async() 来获取一个回调,你将调用它以获得最终值。

{
  /* 首选方式:使用 promise */
  filter() {
    return new Promise(/* 等等... */);
  },

  /* 传统方式:使用 this.async */
  validate: function (input) {
    // 声明函数为异步,并保存完成回调
    var done = this.async();

    // 执行异步操作
    setTimeout(function() {
      if (typeof input !== 'number') {
        // 在完成回调中传递返回值
        done('你需要提供一个数字');
        return;
      }
      // 在完成回调中传递返回值
      done(null, true);
    }, 3000);
  }
}

答案


一个包含客户端在每个提示中答案的键/值 hash。

  • 问题对象的 name 属性
  • (取决于提示)
    • confirm: (布尔)
    • input : 用户输入(如果定义了 filter 则过滤)(字符串)
    • number: 用户输入(如果定义了 filter 则过滤)(数字)
    • rawlist, list : 选择的值(如果未指定值则为名称)(字符串)

分隔符


可以将分隔符添加到任何 choices 数组中:

// 在问题对象中
choices: [ "选项A", new inquirer.Separator(), "选项B" ]

// 显示如下
[

?] 请选择:
 > 选项A
   ------------
   选项B

你可以为分隔符设置一个自定义行:

// 自定义行
new inquirer.Separator(' = 选择分组 = ');

提示类型


如果没有指定 type,默认类型是 input

输入 - (input)
{
  type: 'input',
  name: 'first_name',
  message: "你叫什么名字?"
}
确认 - (confirm)
{
  type: 'confirm',
  name: 'to_be_deleted',
  message: '你确定要删除吗?',
  default: false
}
列表 - (list)
{
  type: 'list',
  name: 'theme',
  message: '你想使用哪个主题?',
  choices: ['黄色', '红色', '绿色', '蓝色'],
  filter: function(val) {
    return val.toLowerCase();
  }
}
原始列表 - (rawlist)
{
  type: 'rawlist',
  name: 'theme',
  message: '你想使用哪个主题?',
  choices: ['黄色', '红色', '绿色', '蓝色']
}
展开 - (expand)

通过添加一个关键字来扩展选择。

{
  type: 'expand',
  message: '与应用程序发生了什么?',
  name: 'reason',
  choices: [
    {
      key: 'd',
      name: '开发人员错误',
      value: 'dev_error'
    },
    {
      key: 'u',
      name: '用户错误',
      value: 'user_error'
    },
    {
      key: 'o',
      name: '其他',
      value: 'other'
    }
  ]
}
复选框 - (checkbox)
{
  type: 'checkbox',
  message: '选择你喜欢的颜色',
  name: 'colors',
  choices: [
    {
      name: '红色',
      checked: true
    },
    {
      name: '蓝色'
    },
    {
      name: '绿色'
    }
  ]
}
密码 - (password)
{
  type: 'password',
  message: '输入你的秘密',
  name: 'secret',
  mask: '*'
}
编辑器 - (editor)

将文本编辑器用于多行文本输入。

{
  type: 'editor',
  message: '输入你的笔记',
  name: 'notes'
}

反应性界面


Inquirer 提供一个 Rx 接口来创建更复杂的提示流。

var observable = Rx.Observable.create(function (observer) {
  observer.next({
    type: 'input',
    name: 'first_name',
    message: "你叫什么名字?"
  });
  observer.next({
    type: 'input',
    name: 'last_name',
    message: "你的姓氏是什么?",
    when: function (answers) {
      return answers.first_name !== '中立';
    }
  });
  observer.complete();
});

inquirer.prompt(observable);

支持


有关问题或功能请求,请使用 GitHub issues tracker

已知问题


查看 GitHub issues

新闻


查看 GitHub releases

贡献


查看 GitHub contributing guide

许可


MIT 许可。查看 LICENSE 文件。

插件


一些插件以扩展 Inquirer 的功能:

  • 15
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值