作者:我从不在乎O心痛 | 来源:互联网 | 2023-09-13 14:09
一,概述
在写前端项目的脚手架之类的配置时,需要在命令行中进行交互,以获取用户的配置。这时就可以使用这个js库。
二,基本用法
1,使用的语法结构
const inquirer = require('inquirer');const promptList = [{...},{...}
];
inquirer.prompt(promptList).then(answers => {console.log(answers);
})
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',message: '设置一个用户名:',name: 'name',default: "test_user" },{type: 'input',message: '请输入手机号:',name: 'phone',validate: function(val) {if(val.match(/\d{11}/g)) { return true;}return "请输入11位数字";}}
];
效果:
2,rawList
{type: 'rawlist',message: '请选择一种水果:',name: 'fruit',choices: ["Apple","Pear","Banana"]
},
3,list
{type: '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) { return answers.watch}}
四,完整的代码
const inquirer = require('inquirer');
const promptList = [{type: 'input',message: '设置一个用户名:',name: 'name',default: "test_user" },{type: 'input',message: '请输入手机号:',name: 'phone',validate: function(val) {if(val.match(/\d{11}/g)) { return true;}return "请输入11位数字";}},{type: 'rawlist',message: '请选择一种水果:',name: 'fruit',choices: ["Apple","Pear","Banana"]},{type: '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) { 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()