热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

inquirer:命令行中与用户进行交互的js库

一,概述在写前端项目的脚手架之类的配置时,需要在命令行中进行交互,以获取用户的配置。这时就可以使用这个js库。二,基本用

一,概述

在写前端项目的脚手架之类的配置时,需要在命令行中进行交互,以获取用户的配置。这时就可以使用这个js库。


二,基本用法


1,使用的语法结构

const inquirer = require('inquirer');const promptList = [// 具体交互内容,每一个对象里都是一次交互{...},{...}
];
inquirer.prompt(promptList).then(answers => {console.log(answers); // 返回的结果是一个promise对象,交互的结果就存储在这里
})

2,参数概述

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默认后缀。

三,对应常用的类别


1,input

const promptList = [{type: 'input',// input类型带测试message: '设置一个用户名:',name: 'name',default: "test_user" },{type: 'input',//input类型带校验message: '请输入手机号:',name: 'phone',validate: function(val) {if(val.match(/\d{11}/g)) { // 校验位数return true;}return "请输入11位数字";}}
];

效果:
在这里插入图片描述


2,rawList

{type: 'rawlist',//rawlist类型message: '请选择一种水果:',name: 'fruit',choices: ["Apple","Pear","Banana"]
},

在这里插入图片描述


3,list

{type: 'list',//list类型name: 'env',message: '请选择你要部署的环境?',choices: ['生产环境', '准生产环境', '测试环境']},

在这里插入图片描述


4,checkoutBox

{type: "checkbox",message: "选择颜色:",name: "color",choices: [{name: "red"},new inquirer.Separator(), // 添加分隔符{name: "blur",checked: true // 默认选中},{name: "green"},new inquirer.Separator("--- 分隔符 ---"), // 自定义分隔符{name: "yellow"}]}

在这里插入图片描述


5,comfirm

{type: "confirm",message: "是否使用监听?",name: "watch",default:true},{type: "confirm",message: "是否进行文件过滤?",name: "filter",when: function(answers) { // 当watch为true的时候才会提问当前问题return answers.watch}}

在这里插入图片描述


四,完整的代码

const inquirer = require('inquirer');
const promptList = [{type: 'input',// input类型带测试message: '设置一个用户名:',name: 'name',default: "test_user" },{type: 'input',//input类型带校验message: '请输入手机号:',name: 'phone',validate: function(val) {if(val.match(/\d{11}/g)) { // 校验位数return true;}return "请输入11位数字";}},{type: 'rawlist',//rawlist类型message: '请选择一种水果:',name: 'fruit',choices: ["Apple","Pear","Banana"]},{type: 'list',//list类型name: 'env',message: '请选择你要部署的环境?',choices: ['生产环境', '准生产环境', '测试环境']},{type: "checkbox",message: "选择颜色:",name: "color",choices: [{name: "red"},new inquirer.Separator(), // 添加分隔符{name: "blur",checked: true // 默认选中},{name: "green"},new inquirer.Separator("--- 分隔符 ---"), // 自定义分隔符{name: "yellow"}]}
];
const nextPromptList=[{type: "confirm",message: "是否使用监听?",name: "watch",default:true},{type: "confirm",message: "是否进行文件过滤?",name: "filter",when: function(answers) { // 当watch为true的时候才会提问当前问题return answers.watch}}
]async function test(){const res=await inquirer.prompt(promptList)//参数是一个数组,数组中每个对象就是一次交互console.log("----",res)const res2 = await inquirer.prompt(nextPromptList);console.log("++++",res2)
}test()

推荐阅读
  • Webpack5内置处理图片资源的配置方法
    本文介绍了在Webpack5中处理图片资源的配置方法。在Webpack4中,我们需要使用file-loader和url-loader来处理图片资源,但是在Webpack5中,这两个Loader的功能已经被内置到Webpack中,我们只需要简单配置即可实现图片资源的处理。本文还介绍了一些常用的配置方法,如匹配不同类型的图片文件、设置输出路径等。通过本文的学习,读者可以快速掌握Webpack5处理图片资源的方法。 ... [详细]
  • 本文讨论了在手机移动端如何使用HTML5和JavaScript实现视频上传并压缩视频质量,或者降低手机摄像头拍摄质量的问题。作者指出HTML5和JavaScript无法直接压缩视频,只能通过将视频传送到服务器端由后端进行压缩。对于控制相机拍摄质量,只有使用JAVA编写Android客户端才能实现压缩。此外,作者还解释了在交作业时使用zip格式压缩包导致CSS文件和图片音乐丢失的原因,并提供了解决方法。最后,作者还介绍了一个用于处理图片的类,可以实现图片剪裁处理和生成缩略图的功能。 ... [详细]
  • 本文介绍了深入浅出Linux设备驱动编程的重要性,以及两种加载和删除Linux内核模块的方法。通过一个内核模块的例子,展示了模块的编译和加载过程,并讨论了模块对内核大小的控制。深入理解Linux设备驱动编程对于开发者来说非常重要。 ... [详细]
  • VueCLI多页分目录打包的步骤记录
    本文介绍了使用VueCLI进行多页分目录打包的步骤,包括页面目录结构、安装依赖、获取Vue CLI需要的多页对象等内容。同时还提供了自定义不同模块页面标题的方法。 ... [详细]
  • 本文介绍了使用哈夫曼树实现文件压缩和解压的方法。首先对数据结构课程设计中的代码进行了分析,包括使用时间调用、常量定义和统计文件中各个字符时相关的结构体。然后讨论了哈夫曼树的实现原理和算法。最后介绍了文件压缩和解压的具体步骤,包括字符统计、构建哈夫曼树、生成编码表、编码和解码过程。通过实例演示了文件压缩和解压的效果。本文的内容对于理解哈夫曼树的实现原理和应用具有一定的参考价值。 ... [详细]
  • Spring源码解密之默认标签的解析方式分析
    本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • C语言注释工具及快捷键,删除C语言注释工具的实现思路
    本文介绍了C语言中注释的两种方式以及注释的作用,提供了删除C语言注释的工具实现思路,并分享了C语言中注释的快捷键操作方法。 ... [详细]
  • 本文介绍了在Vue项目中如何结合Element UI解决连续上传多张图片及图片编辑的问题。作者强调了在编码前要明确需求和所需要的结果,并详细描述了自己的代码实现过程。 ... [详细]
  • 本文介绍了在使用vue和webpack进行异步组件按需加载时可能出现的报错问题,并提供了解决方法。同时还解答了关于局部注册组件和v-if指令的相关问题。 ... [详细]
  • 本文讨论了在openwrt-17.01版本中,mt7628设备上初始化启动时eth0的mac地址总是随机生成的问题。每次随机生成的eth0的mac地址都会写到/sys/class/net/eth0/address目录下,而openwrt-17.01原版的SDK会根据随机生成的eth0的mac地址再生成eth0.1、eth0.2等,生成后的mac地址会保存在/etc/config/network下。 ... [详细]
  • 本文介绍了在wepy中运用小顺序页面受权的计划,包含了用户点击作废后的从新受权计划。 ... [详细]
  • 本文记录了在vue cli 3.x中移除console的一些采坑经验,通过使用uglifyjs-webpack-plugin插件,在vue.config.js中进行相关配置,包括设置minimizer、UglifyJsPlugin和compress等参数,最终成功移除了console。同时,还包括了一些可能出现的报错情况和解决方法。 ... [详细]
  • 本文讨论了编写可保护的代码的重要性,包括提高代码的可读性、可调试性和直观性。同时介绍了优化代码的方法,如代码格式化、解释函数和提炼函数等。还提到了一些常见的坏代码味道,如不规范的命名、重复代码、过长的函数和参数列表等。最后,介绍了如何处理数据泥团和进行函数重构,以提高代码质量和可维护性。 ... [详细]
  • 单页面应用 VS 多页面应用的区别和适用场景
    本文主要介绍了单页面应用(SPA)和多页面应用(MPA)的区别和适用场景。单页面应用只有一个主页面,所有内容都包含在主页面中,页面切换快但需要做相关的调优;多页面应用有多个独立的页面,每个页面都要加载相关资源,页面切换慢但适用于对SEO要求较高的应用。文章还提到了两者在资源加载、过渡动画、路由模式和数据传递方面的差异。 ... [详细]
author-avatar
我从不在乎O心痛
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有