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 相关文章推荐
从阿里妈妈发现的几个不错的表单验证函数
Sep 21 Javascript
在网页中使用document.write时遭遇的奇怪问题
Aug 24 Javascript
jQuery弹出(alert)select选择的值
Apr 21 Javascript
jquery 鼠标滑动显示详情应用示例
Jan 24 Javascript
jQuery设置与获取HTML,文本和值的简单实例
Feb 26 Javascript
jQuery 重复加载错误以及修复方法
Dec 16 Javascript
jQuery中extend函数详解
Feb 13 Javascript
BootStrap glyphicons 字体图标实现方法
May 01 Javascript
任意Json转成无序列表的方法示例
Dec 09 Javascript
JS基于正则表达式实现的密码强度验证功能示例
Sep 21 Javascript
Vue修改项目启动端口号方法
Nov 07 Javascript
详解微信小程序动画Animation执行过程
Sep 23 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
简单易用的计数器(数据库)
2006/10/09 PHP
PHP Zip压缩 在线对文件进行压缩的函数
2010/05/26 PHP
thinkphp中memcache的用法实例
2014/11/29 PHP
基于Laravel5.4实现多字段登录功能方法示例
2017/08/11 PHP
yii gridview实现时间段筛选功能
2017/08/15 PHP
php+mysql开发中的经验与常识小结
2019/03/25 PHP
JavaScript的面向对象方法以及差别
2008/03/31 Javascript
JQuery 构建客户/服务分离的链接模型中Table中的排序分析
2010/01/22 Javascript
jquery.cookie用法详细解析
2013/12/18 Javascript
Jquery 动态生成表格示例代码
2013/12/24 Javascript
通过隐藏iframe实现文件下载的js方法介绍
2014/02/26 Javascript
实现checkbox全选、反选、取消JavaScript小脚本异常
2014/04/10 Javascript
Google官方支持的NodeJS访问API,提供后台登录授权
2014/07/29 NodeJs
javascript正则表达式基础知识入门
2015/04/20 Javascript
使用javascript插入样式
2016/03/14 Javascript
原生js实现百叶窗效果及原理介绍
2016/04/12 Javascript
js改变透明度实现轮播图的算法
2020/08/24 Javascript
jQuery:unbind方法的使用详解
2017/08/14 jQuery
详解webpack性能优化——DLL
2017/10/20 Javascript
vue中使用sessionStorage记住密码功能
2018/07/24 Javascript
PHP 502bad gateway原因及解决方案
2020/11/13 Javascript
requests和lxml实现爬虫的方法
2017/06/11 Python
Python 字符串处理特殊空格\xc2\xa0\t\n Non-breaking space
2020/02/23 Python
pycharm中import呈现灰色原因的解决方法
2020/03/04 Python
Python使用sys.exc_info()方法获取异常信息
2020/07/23 Python
如何安装ruby on rails
2014/02/09 面试题
微观物理专业自荐信
2014/01/26 职场文书
创意婚礼策划方案
2014/05/18 职场文书
社区平安建设方案
2014/05/25 职场文书
园艺专业毕业生求职信
2014/09/02 职场文书
协商一致解除劳动合同协议书
2014/09/14 职场文书
学生不参加考试检讨书
2015/02/19 职场文书
昆虫记读书笔记
2015/06/26 职场文书
2016年六一儿童节开幕词
2016/03/04 职场文书
MySQL连接查询你真的学会了吗?
2021/06/02 MySQL