inquirer.js一个用户与命令行交互的工具详解


Posted in Javascript onMay 18, 2019

写在前面:

开始通过npm init 创建package.json的时候就有大量与用户的交互(当然也可以通过参数来忽略输入);而现在大多数工程都是通过脚手架来创建的,使用脚手架的时候最明显的就是与命令行的交互,如果想自己做一个脚手架或者在某些时候要与用户进行交互,这个时候就不得不提到inquirer.js了。

零. 介绍

由于交互的问题种类不同,inquirer为每个问题提供很多参数:

  • type:表示提问的类型,包括:input, confirm, list, rawlist, expand, checkbox, password, editor;
  • name: 存储当前问题回答的变量;
  • message:问题的描述;
  • default:默认值;
  • choices:列表选项,在某些type下可用,并且包含一个分隔符(separator);
  • validate:对用户的回答进行校验;
  • filter:对用户的回答进行过滤处理,返回处理后的值;
  • transformer:对用户回答的显示效果进行处理(如:修改回答的字体或背景颜色),但不会影响最终的答案的内容;
  • when:根据前面问题的回答,判断当前问题是否需要被回答;
  • pageSize:修改某些type类型下的渲染行数;
  • prefix:修改message默认前缀;
  • suffix:修改message默认后缀。

上面的属性(除transformer外)在下面都有对应使用。

一. 使用

0. 语法结构

const inquirer = require('inquirer');

const promptList = [
  // 具体交互内容
];

inquirer.prompt(promptList).then(answers => {
  console.log(answers); // 返回的结果
})

1. input

const promptList = [{
  type: 'input',
  message: '设置一个用户名:',
  name: 'name',
  default: "test_user" // 默认值
},{
  type: 'input',
  message: '请输入手机号:',
  name: 'phone',
  validate: function(val) {
    if(val.match(/\d{11}/g)) { // 校验位数
      return val;
    }
    return "请输入11位数字";
  }
}];

效果:

inquirer.js一个用户与命令行交互的工具详解

2. confirm

const promptList = [{
  type: "confirm",
  message: "是否使用监听?",
  name: "watch",
  prefix: "前缀"
},{
  type: "confirm",
  message: "是否进行文件过滤?",
  name: "filter",
  suffix: "后缀",
  when: function(answers) { // 当watch为true的时候才会提问当前问题
    return answers.watch
  }
}];

效果:

inquirer.js一个用户与命令行交互的工具详解 

inquirer.js一个用户与命令行交互的工具详解

3. list

const promptList = [{
  type: 'list',
  message: '请选择一种水果:',
  name: 'fruit',
  choices: [
    "Apple",
    "Pear",
    "Banana"
  ],
  filter: function (val) { // 使用filter将回答变为小写
    return val.toLowerCase();
  }
}];

效果:

inquirer.js一个用户与命令行交互的工具详解 

inquirer.js一个用户与命令行交互的工具详解

4. rawlist

const promptList = [{
  type: 'rawlist',
  message: '请选择一种水果:',
  name: 'fruit',
  choices: [
    "Apple",
    "Pear",
    "Banana"
  ]
}];

效果:

inquirer.js一个用户与命令行交互的工具详解

5. expand

const promptList = [{
  type: "expand",
  message: "请选择一种水果:",
  name: "fruit",
  choices: [
    {
      key: "a",
      name: "Apple",
      value: "apple"
    },
    {
      key: "O",
      name: "Orange",
      value: "orange"
    },
    {
      key: "p",
      name: "Pear",
      value: "pear"
    }
  ]
}];

效果:

inquirer.js一个用户与命令行交互的工具详解 

inquirer.js一个用户与命令行交互的工具详解

6. checkbox

const promptList = [{
  type: "checkbox",
  message: "选择颜色:",
  name: "color",
  choices: [
    {
      name: "red"
    },
    new inquirer.Separator(), // 添加分隔符
    {
      name: "blur",
      checked: true // 默认选中
    },
    {
      name: "green"
    },
    new inquirer.Separator("--- 分隔符 ---"), // 自定义分隔符
    {
      name: "yellow"
    }
  ]
}];
// 或者下面这样
const promptList = [{
  type: "checkbox",
  message: "选择颜色:",
  name: "color",
  choices: [
    "red",
    "blur",
    "green",
    "yellow"
  ],
  pageSize: 2 // 设置行数
}];

效果:

inquirer.js一个用户与命令行交互的工具详解 

inquirer.js一个用户与命令行交互的工具详解

7. password

const promptList = [{
  type: "password", // 密码为密文输入
  message: "请输入密码:",
  name: "pwd"
}];

效果:

inquirer.js一个用户与命令行交互的工具详解

8. editor

const promptList = [{
  type: "editor",
  message: "请输入备注:",
  name: "editor"
}];

效果:

inquirer.js一个用户与命令行交互的工具详解 

inquirer.js一个用户与命令行交互的工具详解

写在后面:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js导出table数据到excel即导出为EXCEL文档的方法
Oct 10 Javascript
鼠标滑过出现预览的大图提示效果
Feb 26 Javascript
javascript用正则表达式过滤空格的实现代码
Jun 14 Javascript
require.js 加载 vue组件 r.js 合并压缩的实例
Oct 14 Javascript
Javascript 判断两个IP是否在同一网段实例代码
Nov 28 Javascript
适用于手机端的jQuery图片滑块动画
Dec 09 Javascript
JS实现数组去重复值的方法示例
Feb 18 Javascript
javascript 中iframe高度自适应(同域)实例详解
May 16 Javascript
vue-router 中router-view不能渲染的解决方法
May 23 Javascript
完美解决mui框架off-canvas侧滑超出部分隐藏无法滚动的问题
Jan 25 Javascript
vue中如何实现pdf文件预览的方法
Jul 12 Javascript
JavaScript常用8种数组去重代码实例
Sep 09 Javascript
webpack 代码分离优化快速指北
May 18 #Javascript
如何实现小程序tab栏下划线动画效果
May 18 #Javascript
微信小程序结合Storage实现搜索历史效果
May 18 #Javascript
Fetch超时设置与终止请求详解
May 18 #Javascript
微信小程序实现搜索历史功能
Mar 26 #Javascript
微信小程序云开发修改云数据库中的数据方法
May 18 #Javascript
小程序云开发教程如何使用云函数实现点赞功能
May 18 #Javascript
You might like
用PHP即时捕捉PHP中的错误并发送email通知的实现代码
2013/01/19 PHP
php绘制圆形的方法
2015/01/24 PHP
cookie.js 加载顺序问题怎么才有效
2013/07/31 Javascript
JavaScript制作的可折叠弹出式菜单示例
2014/04/04 Javascript
javascript的document.referrer浏览器支持、失效情况总结
2014/07/18 Javascript
JS实现漂亮的淡蓝色滑动门效果代码
2015/09/23 Javascript
JS获取屏幕高度的简单实现代码
2016/05/24 Javascript
浅谈layer的iframe弹窗给里面的标签赋值的问题
2016/11/10 Javascript
微信小程序 POST请求(网络请求)详解及实例代码
2016/11/16 Javascript
Bootstrap基本组件学习笔记之按钮组(8)
2016/12/07 Javascript
jQuery插件HighCharts绘制的基本折线图效果示例【附demo源码下载】
2017/03/07 Javascript
JS实现复选框的全选和批量删除功能
2017/04/05 Javascript
js读取本地文件的实例
2017/12/22 Javascript
nodejs中方法和模块用法示例
2018/12/24 NodeJs
Vue+Element-UI实现上传图片并压缩
2019/11/26 Javascript
vue移动端写的拖拽功能示例代码
2020/09/09 Javascript
TypeScript 运行时类型检查补充工具
2020/09/28 Javascript
TensorFlow 滑动平均的示例代码
2018/06/19 Python
Pandas删除数据的几种情况(小结)
2019/06/21 Python
pymysql模块的使用(增删改查)详解
2019/09/09 Python
python实现猜数字游戏
2020/03/25 Python
Python判断远程服务器上Excel文件是否被人打开的方法
2020/07/13 Python
Charlotte Tilbury美国官网:英国美妆品牌
2017/10/13 全球购物
荷兰天然和有机产品网上商城:BigGreenSmile.nl
2020/07/26 全球购物
商务日语毕业生自荐信
2013/11/23 职场文书
2014年学生会生活部工作总结
2014/11/07 职场文书
项目负责人岗位职责
2015/02/15 职场文书
酒店客房服务员岗位职责
2015/04/09 职场文书
金正昆讲礼仪观后感
2015/06/11 职场文书
车辆管理制度范本
2015/08/05 职场文书
法院执行局工作总结
2015/08/11 职场文书
优化经济发展环境工作总结
2015/08/11 职场文书
读《推着妈妈去旅行》有感1500字
2019/10/15 职场文书
Python实现DBSCAN聚类算法并样例测试
2021/06/22 Python
MySQL连表查询分组去重的实现示例
2021/07/01 MySQL
nodejs利用readline提示输入内容实例代码
2021/07/15 NodeJs