網(wǎng)站建設(shè)職能績效目標(biāo)網(wǎng)站建設(shè) 全網(wǎng)營銷
inquirerjs
inquirerjs是一個(gè)用來實(shí)現(xiàn)命令行交互界面的工具集合。它幫助我們實(shí)現(xiàn)與用戶的交互交流,比如給用戶一個(gè)提醒,用戶給我們一個(gè)答案,我們根據(jù)用戶的答案來做一些事情,典型應(yīng)用如plop等生成器工具。
npm install inquirer
var inquirer = require('inquirer')
inquirer.prompt([/*在這里配置你的問題(可以設(shè)置多個(gè),他們將按順序向用戶提出) */
]).then(answers=>{//回掉,對用戶輸入的答案進(jìn)行處理
})
方法
- inquire.prompt(questions)->promise
啟動(dòng)命令行提問界面
- questions:數(shù)組類型,每一個(gè)數(shù)組項(xiàng)是一個(gè)問題,這些問題將按照在數(shù)組中的順序一次向用戶提問
- 返回一個(gè)Promise對象
- inquirer.registerPrompt(name,prompt)
注冊一個(gè)提問類型插件
- name:字符串,提問類型名字,在question的type中使用。
- prompt:對象,它自身的提問器。
- inuqirer.createPromptModule() -> prompt function
創(chuàng)建一個(gè)包含自己的提問器模塊。當(dāng)你覆蓋一個(gè)已有的提問類型或者添加一個(gè)新的提問類型時(shí),如果不想影響其它依賴于inquirer的庫,則可以使用此方法。
var prompt = inquirer.createPromptModule();
prompt(question).then();
對象
問題對象
問題對象是否包含與問題相關(guān)的值的散列
- type:表示提問的類型,包括:input、confirm、list、rawlist、expand、checkbox、password、editor。
- name:存儲(chǔ)當(dāng)前輸入的值。
- message:問題的描述。
- default:默認(rèn)值。
- choices:列表選項(xiàng),在某些type下可用,并且包含一個(gè)分隔符;
- validate:對用戶的回答進(jìn)行校驗(yàn)
- filter:對用戶的回答進(jìn)行過濾處理,返回處理后的值。
- when:根據(jù)前面問題的回答,判斷當(dāng)前問題是否需要被回答。
- pageSize:修改某些type類型下的渲染函數(shù)。
- prefix:修改message默認(rèn)前綴。
- suffix: 修改message默認(rèn)后綴。
例一 validate
const inquirer = require('inquirer')
inquirer.prompt([{type:'input',message:'請輸入你姓名',name:'name',default:'lhh'},{type:'input',message:'請輸入你的年齡',name:'age',default:18,validate:(val)=>{if(val>10 && val<120){return val;}else{return "年齡輸入不正常"}}}
])
結(jié)果:
C:\Users\Administrator\Desktop\propt>node app.js
? 請輸入你的姓名: lhh
? 請輸入你的年齡: (18) 18
>> 18
例二 confirm
const inquirer = require('inquirer')
inquirer.prompt([{type:'confirm',message:'是否現(xiàn)在監(jiān)聽',name:'watch',default:true},{type:'confirm',message:'是否能看到我取決于上面是否通過?',name:'pass',suffix:'后綴',when:function(answer){ //當(dāng)watch為true時(shí)才會(huì)到達(dá)這步;return answer.watch //只有return true才能進(jìn)入這個(gè)confirm}}
]).then(answer=>{console.log(answer);
})
看看三種不同輸入結(jié)果的不同:
例三:list選項(xiàng)組
使用鍵盤選擇使用list,數(shù)字選擇可以用rawlist;
const inquirer = require('inquirer')
inquirer.prompt([{type:'list',message:'請選擇一個(gè)選項(xiàng)',name:'fruit',default:'Apple',prefix:'***',suffix:'^^^',choices:["Apple","pear","Banana",],filter:function(val){return val.toUpperCase();}}
]).then(answer=>{console.log(answer)
})
choices可以使用簡寫的.
type:expand。輸入key自動(dòng)拓展成value;
choices:[{key:'a',value:'apple'},{key:'b',value:'banana'},{key:'p',value:'pear'}]
例四
多選和分隔符 checkbox
const inquirer = require('inquirer')
inquirer.prompt([{type:'checkbox',message:'選擇一至多種顏色',name:'color',choices:[{name:'red'},new inquirer.Separator() //添加分隔符{name:'blur',},{name:'green',},{name:'pink',checked:true}new inquirer.Separator('----分隔符---‘)//自定義分隔符{name:'orange'}]}
]).then(answer=>{console.log(answer);
})
例五
密碼:type:password
數(shù)字:type:Number
const inquirer = require("inquirer")
inquirer.prompt([{type:'password',message:'請輸入你的密碼',name:'pwd'}
]).then(answer=>{console.log(answer)
})
例六
編輯器:使用首選編輯器打開一個(gè)臨時(shí)文件,用戶推出編輯器后,將讀取臨時(shí)文件的內(nèi)容。首選編輯器可以指定。
const inquirer = require('inquirer')
inquirer.prompt([{type:'editor',message:'寫下你想寫的東西',name:'editor'}
]).then(answer=>{console.log(answer)
})
例七
更改顯示行數(shù)
const inquirer = require('inquirer')
inquirer.prompt([{type:'checkbox',message:'選擇一至多種顏色'name:'color',choices:["red","blue","green","pink"],pageSize:1}
]).then(answer=>{console.log(answer)
})
除此之外inquirerjs還有很多好用的插件