美文网首页
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