node命令交互inquirer
用过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相关推荐
- 如何用node命令和webpack命令传递参数 转载
1. 比如在项目中我们的publicPath需要根据服务器环境的变化而变化,这时我们会写一个配置文件,在webpack.config.js中读取,可以 如何才能 取到变量呢? 这里介绍一种方法: 如果 ...
- Redis源码学习-MasterSlave的命令交互
0. 写在前面 Version Redis2.2.2 Redis中可以支持主从结构,本文主要从master和slave的心跳机制出发(PING),分析redis的命令行交互. 在Redis中,serv ...
- Node.js: 如何退出node命令或者node server
如果是要退出node命令的话,可以使用: $ node > 9+23 32 > process.exit() $ 或者 $ node > 9+23 32 > .exit $ 如 ...
- [Oracle] Data Pump 详细使用教程(5)- 命令交互模式
[Oracle] Data Pump 详细使用教程(1)- 总览 [Oracle] Data Pump 详细使用教程(2)- 总览 [Oracle] Data Pump 详细使用教程(3)- 总览 [ ...
- Mac 无法运行node命令的解决方法
Mac 无法运行node命令的解决方法 参考文章: (1)Mac 无法运行node命令的解决方法 (2)https://www.cnblogs.com/allenwuhen/p/6834428.htm ...
- node命令与切换node版本
1.Node.js简介 Node.js 需要下载 就是一个软件 在终端窗口运行js代码 安装包可以从 Node.js 的官网首页直接下载 最好使用nvm切换node版本 下面会讲使用方法 2.前端使用 ...
- Python命令交互行代码清空
在使用python命令交互界面时,调试代码比较多时可以使用命令清除命令交互界面的代码,命令如下: >>>import OS >>>_ = os.system('cl ...
- vue 项目在编译时,总是出现系统崩的状态,node 命令框也会报错,报错信息中有v7 或者 v8 的样式。
项目场景: 背景: vue 项目在编译时,总是出现系统崩的状态,node 命令框也会报错. 问题描述 问题: vue 项目在编译时,总是出现系统崩的状态,node 命令框也会报错,如下图:有v7 或者 ...
- Android-嵌入式蓝牙 多年蓝牙产品开发学习心路历程分享-A2DP音频流的建立、A2DP播放暂停音乐命令交互、HFP、AVRCP、RFCOMM、OPP、AVDTP
序言 当你点进来看到这段话的时候,证明你真心想学好蓝牙,哈哈哈,本来想搜索蓝牙某个协议,却成了一大段废话文,但此时,别退出去,如果你是一个牛逼的蓝牙开发者,只是想了解蓝牙某个协议或者知识点,那么直接点 ...
- Android 蓝牙 A2DP基础概念、A2DP音频流的建立及传输流程、A2DP播放暂停音乐命令交互过程分析 - 史上最全分析
同学,别退出呀,我可是全网最牛逼的 Android 蓝牙分析博主,我写了上百篇蓝牙文章,请点击下面了解本专栏,进入本博主主页看看再走呗,一定不会让你后悔的,记得一定要去看主页置顶文章哦. Androi ...
最新文章
- 北航c语言简答题目汇总_2020下半年至2021年【化学/计算机/生物类】国际竞赛汇总!...
- 从0开始配置Flutter并运行demo
- jdk中的动态代理和cglib中动态代理的区别
- 全栈、均栈、MERN栈,哪个才是下一代Web项目的正确栈
- 64位jdk连接32位的mysql_在64位客户端使用32位的ODBC配置
- 中科大计算机博士毕业条件,中国科技大学博士和硕士研究生毕业要求.doc
- php遍历目录与文件夹,介绍几种php遍历目录与文件夹的方法
- 腾讯牵手数十家合作伙伴发起“光合计划” 推动“百千万”三大目标落地
- at/cron计划任务初解
- 安装阿里Java代码规约插件
- JWT—JSON Web Token - 理解JWT网络间应用用户安全认证交互设计
- windows防火墙设置_合理利用Windows 7防火墙,阻止部分功能,避免网络恶意软件攻击...
- grafna监控Java接口_性能测试之 JVM 的监控 Grafana
- Rust : channel、多线程与 CTP相关机制的模拟
- chrome 开发工具插件总结
- 关于SpringBoot对junit4/junit5的整合
- JAVA ME游戏----个人移植:9688雷霆战机
- Vue + ElementUI 实现一个动态添加元素的小例子
- python打开文件方式
- 桌面点右键,白屏怎么办