Inquirer.js 交互式命令行

Inquirer.js 交互式命令行

例子

const inquirer = require('inquirer')


// 設(shè)置問題
inquirer.prompt([
    
    {
        type: 'input' // 問題類型
        name: 'name' // 數(shù)據(jù)屬性名
        message: '名稱' // 提示信息
        default: 'Rogan' // 默認(rèn)值
    }
    
]).then( answers =>{
    // 處理結(jié)果
    console.log(`你的名字: `, answers.name)
    
} )

安裝

// npm
npm --save-dev inquirer

// yarn
yarn -d inquirer

基本概念

  • quesitons // 交互提問, 設(shè)置需要交互的內(nèi)容,例如 輸入, 選擇等
  • answers // 處理回答,設(shè)置處理函數(shù)

QUESITONS 提問配置

  • type 問題類型
  • name 數(shù)據(jù)屬性
  • message 提示信息
  • default 默認(rèn)值
  • choices 選項列表
  • validate 校驗函數(shù)
  • filter 多慮器
  • transformer 轉(zhuǎn)換器

問題類型

  • input 輸入

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

    {
        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 // 默認(rèn)值為列表項編號,起始為 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: '內(nèi)容'
    }
    

多步驟嵌套

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 })

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Inquirer.js試圖為NodeJs做一個可嵌入式的美觀的命令行界面。如下圖: 提供錯誤回調(diào) 詢問操作者問題 ...
    SherHoooo閱讀 19,397評論 2 8
  • 官網(wǎng) 中文版本 好的網(wǎng)站 Content-type: text/htmlBASH Section: User ...
    不排版閱讀 4,727評論 0 5
  • Lua 5.1 參考手冊 by Roberto Ierusalimschy, Luiz Henrique de F...
    蘇黎九歌閱讀 14,259評論 0 38
  • 像一些前端的腳手架,比如 vue-cli 一樣,直接在命令行輸入一段命令就可以生成一個項目。這是怎么做到的呢? y...
    魚仔1234閱讀 2,569評論 0 12
  • 昨天下午歸家,媽媽將將掃好了灶間,這是過年前的除塵了。以前廂屋是瓦房時,老人拿竹枝扎在竹竿頭,當(dāng)撣子用,清羅羅網(wǎng)最...
    江海凝閱讀 590評論 0 0

友情鏈接更多精彩內(nèi)容