用过vue或者react的用脚手架新建项目的应该都进行过命令交互,vue创建的时候会让你选择vue2还是vue3,也有多选要什么配置,也有输入y或者n选择是否用history路由等,这其实用inquire这个包都能实现。

环境跟之前commander使用是一样的,初始化之后配置bin和npm link一下,这边就不再说了。

安装inquirer:
npm install inquirer

引入:
var inquirer = require(‘inquirer’);

inquirer主要知道这几个类型类型,其他的有兴趣再去了解:
input,confirm,list,checkbox,password

方法用prompt就行,另外两个registerPrompt和createPromptModule也可以自己去了解。

我们按照顺序都展示出来,不管输入还是选择了什么,都继续下一种类型展示,代码:

typeInput();function typeInput() {inquirer.prompt([ {name: 'input',type: 'input',message: 'input: year, month and day',default: 'year'}]).then((res) => {console.log('Year: ' + res.input);typeConfirm();})
}function typeConfirm(){inquirer.prompt([ {name: 'confirm',type: 'confirm',message: 'confirm',default: true}]).then((res) => {console.log('confirm: ' + res.confirm);typeList();})
}function typeList(){inquirer.prompt([ {name: 'list',type: 'list',message: 'list',choices: ['red', 'blue', 'yellow'],default: 1}]).then((res) => {console.log('list: ' + res.list);typeCheckbox();})
}function typeCheckbox(){inquirer.prompt([ {name: 'checkbox',type: 'checkbox',message: 'checkbox',choices: ['red', 'blue', 'yellow'],default: ['blue']}]).then((res) => {console.log('checkbox: ' + res.checkbox);typePassword();})
}function typePassword(){inquirer.prompt([ {name: 'password',type: 'password',message: 'password',mask: false //是否出现*号}]).then((res) => {console.log('password: ' + res.password);})
}

prompt方法返回的是Promise,用的时候也可以配合async和await,返回的字段就是name字段:

typeCheckbox();
async function typeCheckbox() {let {checkbox} = await inquirer.prompt([{name: 'checkbox',type: 'checkbox',message:'checkbox',choices: ['red', 'blue', 'yellow'],default: ['blue']}]);console.log('checkbox ' + checkbox);
}

效果:

commander和inquirer可以说是命令行交互最基本的两个包,这两个包的基本用法已经足够我们去开发一个cli的命令行交互操作。

node命令交互inquirer相关推荐

  1. 如何用node命令和webpack命令传递参数 转载

    1. 比如在项目中我们的publicPath需要根据服务器环境的变化而变化,这时我们会写一个配置文件,在webpack.config.js中读取,可以 如何才能 取到变量呢? 这里介绍一种方法: 如果 ...

  2. Redis源码学习-MasterSlave的命令交互

    0. 写在前面 Version Redis2.2.2 Redis中可以支持主从结构,本文主要从master和slave的心跳机制出发(PING),分析redis的命令行交互. 在Redis中,serv ...

  3. Node.js: 如何退出node命令或者node server

    如果是要退出node命令的话,可以使用: $ node > 9+23 32 > process.exit() $ 或者 $ node > 9+23 32 > .exit $ 如 ...

  4. [Oracle] Data Pump 详细使用教程(5)- 命令交互模式

    [Oracle] Data Pump 详细使用教程(1)- 总览 [Oracle] Data Pump 详细使用教程(2)- 总览 [Oracle] Data Pump 详细使用教程(3)- 总览 [ ...

  5. Mac 无法运行node命令的解决方法

    Mac 无法运行node命令的解决方法 参考文章: (1)Mac 无法运行node命令的解决方法 (2)https://www.cnblogs.com/allenwuhen/p/6834428.htm ...

  6. node命令与切换node版本

    1.Node.js简介 Node.js 需要下载 就是一个软件 在终端窗口运行js代码 安装包可以从 Node.js 的官网首页直接下载 最好使用nvm切换node版本 下面会讲使用方法 2.前端使用 ...

  7. Python命令交互行代码清空

    在使用python命令交互界面时,调试代码比较多时可以使用命令清除命令交互界面的代码,命令如下: >>>import OS >>>_ = os.system('cl ...

  8. vue 项目在编译时,总是出现系统崩的状态,node 命令框也会报错,报错信息中有v7 或者 v8 的样式。

    项目场景: 背景: vue 项目在编译时,总是出现系统崩的状态,node 命令框也会报错. 问题描述 问题: vue 项目在编译时,总是出现系统崩的状态,node 命令框也会报错,如下图:有v7 或者 ...

  9. Android-嵌入式蓝牙 多年蓝牙产品开发学习心路历程分享-A2DP音频流的建立、A2DP播放暂停音乐命令交互、HFP、AVRCP、RFCOMM、OPP、AVDTP

    序言 当你点进来看到这段话的时候,证明你真心想学好蓝牙,哈哈哈,本来想搜索蓝牙某个协议,却成了一大段废话文,但此时,别退出去,如果你是一个牛逼的蓝牙开发者,只是想了解蓝牙某个协议或者知识点,那么直接点 ...

  10. Android 蓝牙 A2DP基础概念、A2DP音频流的建立及传输流程、A2DP播放暂停音乐命令交互过程分析 - 史上最全分析

    同学,别退出呀,我可是全网最牛逼的 Android 蓝牙分析博主,我写了上百篇蓝牙文章,请点击下面了解本专栏,进入本博主主页看看再走呗,一定不会让你后悔的,记得一定要去看主页置顶文章哦. Androi ...

最新文章

  1. 北航c语言简答题目汇总_2020下半年至2021年【化学/计算机/生物类】国际竞赛汇总!...
  2. 从0开始配置Flutter并运行demo
  3. jdk中的动态代理和cglib中动态代理的区别
  4. 全栈、均栈、MERN栈,哪个才是下一代Web项目的正确栈
  5. 64位jdk连接32位的mysql_在64位客户端使用32位的ODBC配置
  6. 中科大计算机博士毕业条件,中国科技大学博士和硕士研究生毕业要求.doc
  7. php遍历目录与文件夹,介绍几种php遍历目录与文件夹的方法
  8. 腾讯牵手数十家合作伙伴发起“光合计划” 推动“百千万”三大目标落地
  9. at/cron计划任务初解
  10. 安装阿里Java代码规约插件
  11. JWT—JSON Web Token - 理解JWT网络间应用用户安全认证交互设计
  12. windows防火墙设置_合理利用Windows 7防火墙,阻止部分功能,避免网络恶意软件攻击...
  13. grafna监控Java接口_性能测试之 JVM 的监控 Grafana
  14. Rust : channel、多线程与 CTP相关机制的模拟
  15. chrome 开发工具插件总结
  16. 关于SpringBoot对junit4/junit5的整合
  17. JAVA ME游戏----个人移植:9688雷霆战机
  18. Vue + ElementUI 实现一个动态添加元素的小例子
  19. python打开文件方式
  20. 桌面点右键,白屏怎么办

热门文章

  1. Java 方法如何允许多个返回值
  2. Stemwin(基于打点函数)
  3. YOLOv5 MNN框架C++推理
  4. 用Java输出输出素数
  5. java jai_imageio注册机制分析
  6. struts2面试题汇总
  7. 在线学习算法FTRL-Proximal原理
  8. IntelliJ IDEA 2017.3.5破解
  9. [JavaScript]最长公共子串
  10. Qt 定时器 (QTimer)的几种使用方法