【逐日一包0024】inquirer

[github地点:https://github.com/ABCDdouyae…]

inquirer

好用的交互命令行东西

要领

1.inquirer.prompt(questions) -> promise 启动提醒界面并返回promise
const req = require('inquirer');
req.prompt([{
    type: "string",
    message:'请输入您的名字',
    name: 'name'
}]).then(as=>{
    console.log('您的名字是:'+as.name)
}).catch(err=>{console.log(err)})

/**
 ? 请输入您的名字 小明
您的名字是:小明
 */
2.inquirer.registerPrompt(name, prompt) 在name下面注册提醒插件
3.inquirer.createPromptModule() -> prompt function

发问的题目对象属性

type:提醒的范例(String),默以为input,也能够设置为input, confirm, list, rawlist, expand, checkbox, password, editor;

name:接收答案的key(String),当题目被回复,答案会以对象情势返回;

message:用于设置发问的题目(String|Function),假如设置为function,该function的第一个参数为近期回复的答案组成的对象;

req.prompt([{
     type:'input',
     message:'请输入你的名字?',
     name:"name",
 },
    {
     type:'input',
     message: function(e){
         return `${e.name},请输入您的岁数?`
     },
     name: 'age'
 }]).then(as=>{
     console.log(as)
 })

 /**
? 请输入你的名字? 小明
? 小明,请输入您的岁数? 12
{ name: '小明', age: '12' }
  */

default:假如用户没有回复,默许值存在则为该题目赋值默许答案(String|Number|Boolean|Array|Function),假如设置为function,该function的第一个参数为近期回复的答案组成的对象;

choices:用于设置挑选的列表(Array|Function),假如设置为function,该function的第一个参数为近期回复的答案组成的对象;

req.prompt([{
    type: "list",
    message:'请挑选性别',
    name: 'name',
    choices: ['男', '女']
}]).then(as=>{
    console.log(as)
}).catch(err=>{console.log(err)})

/**
? 请挑选性别 女
{ name: '女' }
 */

validate:用来校验输入的答案是不是符合要求(Function),该function的第一个参数为近期回复的答案,经由过程返回boolean来推断是不是校验经由过程,假如未经由过程则从新进入输入界面;

req.prompt([{
    type: "input",
    message:'请输入您的电话号码?',
    name: 'mobile',
    validate:function(e){
        if(e.match(/^[1][2,3,5,6,7,8][0-9]{9}$/)){return true}
        console.log('\n您输入的电话号码花样不对,请从新输入')
        return false;
    }
}]).then(as=>{
    console.log(as)
}).catch(err=>{console.log(err)})

/**
? 请输入您的电话号码? 110
您输入的电话号码花样不对,请从新输入
? 请输入您的电话号码? 16619928930
{ mobile: '16619928930' }
 */

filter:对输入的答案举行处置惩罚后返回新的答案(Function),该function的第一个参数为近期回复的答案

req.prompt([{
    type: "checkbox",
    message:'请挑选性别?',
    name: 'sex',
    choices:['男', '女'],
    filter:function(e){
        let sex = '';
        e === '女' ? sex = 'woman' : sex = 'man';
        return sex;
    }
}]).then(as=>{
    console.log(as)
}).catch(err=>{console.log(err)})

/**
 ❯◯ 男
  ◯ 女
  { sex: 'man' }
 */

transformer:对用户的题目举行转换(!!!!我没看懂这个是干吗的,有看懂的求指教)(Function)

when:用来设定这个题目是不是有必要被发问(Function),返回boolean,返回false示意疏忽这个题目,该function的第一个参数为近期回复的答案

 req.prompt([{
    type: "list",
    message:'叨教你完婚了吗?',
    name: 'isMarry',
    choices:['完婚', '未完婚'],
},{
    type: "input",
    message:'叨教你孩子多大了?',
    name: 'age',
    when:function(e){
     return e.isMarry === '完婚'
    }
}]).then(as=>{
    console.log(as)
}).catch(err=>{console.log(err)})
/**
? 叨教你完婚了吗? 未完婚
{ isMarry: '未完婚' } 
 */

pageSize:设置挑选列表每页显现的可选项数量(Number)

prefix:给题目前面增加内容(String)

req.prompt([{
    type: "string",
    message:'请输入您的名字',
    name: 'name',
    prefix:'您好'
}]).then(as=>{
    console.log('您的名字是:'+as.name)
}).catch(err=>{console.log(err)})
/**
 您好 请输入您的名字 ww
 您的名字是:ww
 */

suffix:给题目背面增加内容(String)

设置新的UI显现

var ui = new req.ui.BottomBar();

// During processing, update the bottom bar content to display a loader
// or output a progress bar, etc
ui.updateBottomBar('new bottom bar content');

req.prompt([{
    type: "string",
    message:'请输入您的名字',
    name: 'name',
    prefix:'您好'
}]).then(as=>{
    console.log('您的名字是:'+as.name)
}).catch(err=>{console.log(err)})

采纳迭代器形式

const req = require('inquirer');
const Rx = require('rxjs');
var prompts = new Rx.Subject();
req.prompt(prompts);

prompts.next({
    type: "string",
    message:'请输入您的名字',
    name: 'name',
});
prompts.next({
    type: "string",
    message:'请输入您的性别',
    name: 'sex',
});

prompts.complete();
    原文作者:王炜
    原文地址: https://segmentfault.com/a/1190000017262724
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞