【架构师(第十二篇)】脚手架之命令行交互工具 inquirer.js 使用方法

2022-12-10 13:27:58 浏览数 (1)


inquirer.js 基本用法

什么是 inquirer.js

inquirer.js 是一个用来实现命令行交互式界面的工具集合。它帮助我们实现与用户的交互式交流,比如给用户提一个问题,用户给我们一个答案,我们根据用户的答案来做一些事情。

它包含以下功能:

  • 可以向用户提出问题
  • 解析用户输入的答案
  • 对用户的输入进行验证
  • 提供错误回调

安装

代码语言:javascript复制
npm i inquirer -S

使用

代码语言:javascript复制
// 引入 inquirer
const inquirer = require('inquirer');
// 启动 inquirer
inquirer
  // 交互内容
  .prompt([
  ])
  // 收集用户答案后的回调,会以键值对的方式存储在这里
  .then((answers) => {
  })
  // 捕获错误的回调
  .catch((error) => {
  });

default,choices,validate,filter 以及when 的值为函数时,可以异步调用,也可以返回一个Promise或者使用this.async()方法来获得一个回调,然后使用最终值来调用它。

代码语言:javascript复制
{
  filter() {
    return new Promise();
  },

  validate: function (input) {
    var done = this.async();
    setTimeout(function() {
      if (typeof input !== 'number') {
        done('You need to provide a number');
        return;
      }
      done(null, true);
    }, 3000);
  }
}

属性

这里暂时只做介绍,后面会结合代码演示所有属性的使用方法。

type

表示提问的类型,包括:

  • input
  • number
  • confirm
  • list
  • rawlist
  • expand
  • checkbox
  • password
  • editor

name

存储当前问题回答的变量;

message

问题的描述;

default

默认值;

choices

列表选项,在某些 type 下可用,并且包含一个分隔符( separator );

validate

对用户的回答进行校验,只有返回 true 的时候才会向下进行;

filter

对用户的回答进行过滤处理,返回处理后的值,会修改用户提交的值;

transformer

对用户回答的显示效果进行处理(如:修改回答的字体或背景颜色),但不会影响最终的答案的内容;

when

根据前面问题的回答,判断当前问题是否需要被回答;

pageSize

修改某些 type 类型下的渲染行数;

prefix

修改 message 默认前缀;

suffix

修改 message 默认后缀;

mask

修改 typepassword 时的显示模式。

交互类型

input

输入交互,完整代码如下,但是我会一个个属性的添加进行演示。

代码语言:javascript复制
inquirer
  .prompt([
    {
      type: 'input',
      message: '请输入姓名',
      name: 'name',
      default: '一尾流莺',
      validate: (answer) => {
        if (answer.length < 2) {
          return '名字不可以少于两个字符';
        }
        console.log();
        return true;
      },
      transformer: (a) => {
        return `最帅的人是 : ${a}`;
      },
      filter: (a) => {
        return `最帅的人是 : ${a}`;
      },
      prefix: '


	

0 人点赞