node如何实现cmd弹窗交互之inquirer

 更新时间:2023年10月30日 09:42:10   作者:JadeFlicker  
这篇文章主要介绍了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,editor
  • name:(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下运用MQTT协议实现即时通讯及离线推送的方法

    在Node.js下运用MQTT协议实现即时通讯及离线推送的方法

    这篇文章主要介绍了在Node.js下运用MQTT协议实现即时通讯及离线推送的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-01-01
  • 使用pkg打包nodejs项目并解决本地文件读取的问题

    使用pkg打包nodejs项目并解决本地文件读取的问题

    这篇文章主要介绍了使用pkg打包nodejs项目并解决本地文件读取的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-10-10
  • 详解redis在nodejs中的应用

    详解redis在nodejs中的应用

    本篇文章给大家详细分析了redis在nodejs中的应,对此知识点有兴趣的朋友可以跟着学习下。
    2018-05-05
  • nodejs个人博客开发第六步 数据分页

    nodejs个人博客开发第六步 数据分页

    这篇文章主要为大家详细介绍了nodejs个人博客开发的数据分页,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-04-04
  • 详解nodejs通过代理(proxy)发送http请求(request)

    详解nodejs通过代理(proxy)发送http请求(request)

    本篇文章主要介绍了nodejs通过代理(proxy)发送http请求(request),具有一定的参考价值,有兴趣的可以了解一下
    2017-09-09
  • 深入浅析Nodejs的Http模块

    深入浅析Nodejs的Http模块

    我们知道传统的HTTP服务器是由Aphche、Nginx、IIS之类的软件来搭建的,但是Nodejs并不需要,Nodejs提供了http模块,自身就可以用来构建服务器,下面通过本文给大家介绍Nodejs的Http模块,需要的的朋友参考下吧
    2017-06-06
  • Nest.js参数校验和自定义返回数据格式详解

    Nest.js参数校验和自定义返回数据格式详解

    这篇文章主要给大家介绍了关于Nest.js参数校验和自定义返回数据格式的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • Node升级后vue项目node-sass报错问题及解决

    Node升级后vue项目node-sass报错问题及解决

    这篇文章主要介绍了Node升级后vue项目node-sass报错问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • node.js路径处理方法以及绝对路径详解

    node.js路径处理方法以及绝对路径详解

    这篇文章介绍的是nodejs路径处理及绝对路径以及一个Node.js获取项目根目录的小技巧,这个内容非常实用。有需要的朋友们可以参考借鉴,下面来一起看看吧。
    2016-09-09
  • 简单两步使用node发送qq邮件的方法

    简单两步使用node发送qq邮件的方法

    这篇文章主要介绍了简单两步使用node发送qq邮件的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-03-03

最新评论