node如何实现cmd弹窗交互之inquirer
node实现cmd弹窗交互——inquirer
实现cmd弹窗交互
安装inquirer包
npm i inquirer
引入inquirer包
var inquirer = require('inquirer'); // console.log('Hi, welcome to Node Pizza'); var questions = [ { type: 'input', name: 'toBeDelivered',//这个参数 message: '请选择文件夹', } ]; inquirer.prompt(questions).then(answers => { console.log(answers); });
questions为配置参数对象
type
:(String)提示的类型。默认值:input-可能的值:input,number,confirm, list,rawlist,expand,checkbox,password,editorname
:(String)将答案存储在答案哈希中时使用的名称。如果名称包含句点,它将在答案哈希中定义路径message
:(String | Function)要打印的问题。如果定义为函数,则第一个参数将是当前查询者会话答案。缺省值为name(后跟冒号)。
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.js中Express框架使用axios同步请求(async+await)实现方法
这篇文章主要介绍了Node.js中Express框架使用axios同步请求(async+await)实现方法,结合实例形式分析了express框架使用异步交互axios模块实现同步请求的相关操作技巧与注意事项,需要的朋友可以参考下2023-04-04Node.JS在命令行中检查Chrome浏览器是否安装并打开指定网址
这篇文章主要介绍了Node.JS在命令行中检查Chrome浏览器是否安装,并打开指定网址,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下2019-05-05node.js的exports、module.exports与ES6的export、export default深入详解
这篇文章主要给大家介绍了关于node.js中的exports、module.exports与ES6中的export、export default到时是什么的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。2017-10-10
最新评论