美文网首页
Inquirer.js 交互式命令行

Inquirer.js 交互式命令行

作者: copyLeft | 来源:发表于2019-07-29 22:16 被阅读0次

Inquirer.js 交互式命令行

例子

const inquirer = require('inquirer')


// 设置问题
inquirer.prompt([
    
    {
        type: 'input' // 问题类型
        name: 'name' // 数据属性名
        message: '名称' // 提示信息
        default: 'Rogan' // 默认值
    }
    
]).then( answers =>{
    // 处理结果
    console.log(`你的名字: `, answers.name)
    
} )

安装

// npm
npm --save-dev inquirer

// yarn
yarn -d inquirer

基本概念

  • quesitons // 交互提问, 设置需要交互的内容,例如 输入, 选择等
  • answers // 处理回答,设置处理函数

QUESITONS 提问配置

  • type 问题类型
  • name 数据属性
  • message 提示信息
  • default 默认值
  • choices 选项列表
  • validate 校验函数
  • filter 多虑器
  • transformer 转换器

问题类型

  • input 输入

    inquirer.prompt([
        {
            type: 'input',
            name: 'address',
            message: '地址',
        }  
    ])
    
  • number 数字

    {
        type: 'number',
        name: 'phone',
        message: '手机号'
    }
    
  • confirm 是否选择 (y/n)

    {
      type: 'confirm',
        name: 'out',
        message: '是否退出'
    }
    
    // y: 返回 true, n: 返回 false
    
  • list 选择列表

    {
        type: 'list',
        name: 'phone',
        message: '选择手机品牌',
            choices: [
                { name: '小米', value: 'mi' },
                { name: '华为', value: 'huawei' },
                { name: '苹果', value: 'apple' }
            ]
    }
    
  • rawlist 带编号的选择列表

    {
        type: 'rawlist',
        name: 'num',
        message: '编号',
        choices: [
            { name: '1', value: 1 },
            { name: '2', value: 2 }
        ],
        default: 0 // 默认值为列表项编号,起始为 0
        
    }
    
  • expand 带缩写选择列表

    {
        type: 'expand',
        name: 'lang',
        message: "语言",
        choices: [
          { key: 'j', name: 'javascript', value: 1 },
            { key: 'h', name: 'html', value: 2 }
        ]
    }
    
  • checkbox 多选

      {
            type: 'checkbox',
            name: 'lang',
            message: '语言',
            choices: [
    
                { name: 'javascript', value: 1 },
                { name: 'php', value: 2 },
                { name: 'go', value: 3 },
                
            ],
        }
    
  • password 密码

    {
        type: 'password',
        name: 'pw',
        message: '密码',
    }
    
  • editor 文本编辑器

    {
        type: 'editor',
        name: 'content',
        message: '内容'
    }
    

多步骤嵌套

const conf = [


    [

        {
            type: 'list',
            name: 'data',
            message: '选择语言',
            choices: [
    
               
                {
                    name: 'javascript', value: 1
                },
                {
                    name: 'go', value: 2
                },
                
                
            ]
        }
        
    ],

    [

        {
            type: 'list',
            name: 'data',
            message: '工作类型',
            choices: [
                {
                    name: 'web', value: 3,
                },
                {
                    name: 'node', value: 3
                }
            ]
        }
        
    ],
    [
        {
            type: 'list',
            name: 'data',
            message: '工作类型',
            choices: [
                {
                    name: 'docker',  value: 3
                },
                {
                    name: 'block chian', value: 3
                }
            ] 
        }
    ],
    [
        {
            type: 'number',
            name: 'data',
            message: '期望薪资',
        }
    ]
    
]


let step = 0;

function select({data}){

    if(step < 3){
        step++
        return inquirer.prompt(conf[data]).then(select)
    }else{
        console.log('end: ',  data)
    }
    
}

select({ data: step })

相关文章

网友评论

      本文标题:Inquirer.js 交互式命令行

      本文链接:https://www.haomeiwen.com/subject/psqwrctx.html