noode inquirer

一、

由于交互的问题种类不同,inquirer为每个问题提供很多参数:

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

#!/usr/bin/env node
const inquirer = require('inquirer');

const promtList = [
    {
        type: 'input',
        message: '输入用户名:',
        name: 'name',
        default: 'shangyy'
    },
    {
        type: 'password',
        message:  '输入密码',
        name: 'password',
        validate: function(val){
            if(val === '123456') return  true;
            return '密码错误,请重新输入';
        }
    },
    {
        type: 'input',
        message: function(params){
            return `输入${params.name}年龄`
        },
        name: 'age',
        default: '18',
        validate: function(value){
            if(value > 0 && value < 100) return true;
            return "请输入1~99位数字";
        }
    },
    {
        type: 'confirm',
        message: '是否监听',
        name: 'isWatch',  // 直接回车 yes
    },
    {
        type: 'list',
        message: 'install tool',
        name: 'tool',
        choices: [
            'npm',
            'yarn',
            'cnpm'
        ],
        filter: function(value){
            return value;
        },
        when: function(answers){
            return answers.isWatch;
        }

    }
]
inquirer.prompt(promtList).then(answers => {
    console.log("answers",answers)
});

 

posted @ 2019-03-10 19:27  shangyueyue  阅读(257)  评论(0编辑  收藏  举报