[github地址:https://github.com/ABCDdouyae...]git
好用的交互命令行工具
const req = require('inquirer'); req.prompt([{ type: "string", message:'請輸入您的名字', name: 'name' }]).then(as=>{ console.log('您的名字是:'+as.name) }).catch(err=>{console.log(err)}) /** ? 請輸入您的名字 小明 您的名字是:小明 */
type:
提示的類型(String),默認爲input,也能夠設置爲input, confirm, list, rawlist, expand, checkbox, password, editor;github
name:
接受答案的key(String),當問題被回答,答案會以對象形式返回;promise
message:
用於設置提問的問題(String|Function),若是設置爲function,該function的第一個參數爲近期回答的答案構成的對象;工具
req.prompt([{ type:'input', message:'請輸入你的名字?', name:"name", }, { type:'input', message: function(e){ return `${e.name},請輸入您的年齡?` }, name: 'age' }]).then(as=>{ console.log(as) }) /** ? 請輸入你的名字? 小明 ? 小明,請輸入您的年齡? 12 { name: '小明', age: '12' } */
default:
若是用戶沒有回答,默認值存在則爲該問題賦值默認答案(String|Number|Boolean|Array|Function),若是設置爲function,該function的第一個參數爲近期回答的答案構成的對象;ui
choices:
用於設置選擇的列表(Array|Function),若是設置爲function,該function的第一個參數爲近期回答的答案構成的對象;插件
req.prompt([{ type: "list", message:'請選擇性別', name: 'name', choices: ['男', '女'] }]).then(as=>{ console.log(as) }).catch(err=>{console.log(err)}) /** ? 請選擇性別 女 { name: '女' } */
validate:
用來校驗輸入的答案是否符合要求(Function),該function的第一個參數爲近期回答的答案,經過返回boolean來判斷是否校驗經過,若是未經過則從新進入輸入界面;命令行
req.prompt([{ type: "input", message:'請輸入您的電話號碼?', name: 'mobile', validate:function(e){ if(e.match(/^[1][2,3,5,6,7,8][0-9]{9}$/)){return true} console.log('\n您輸入的電話號碼格式不對,請從新輸入') return false; } }]).then(as=>{ console.log(as) }).catch(err=>{console.log(err)}) /** ? 請輸入您的電話號碼? 110 您輸入的電話號碼格式不對,請從新輸入 ? 請輸入您的電話號碼? 16619928930 { mobile: '16619928930' } */
filter:
對輸入的答案進行處理後返回新的答案(Function),該function的第一個參數爲近期回答的答案code
req.prompt([{ type: "checkbox", message:'請選擇性別?', name: 'sex', choices:['男', '女'], filter:function(e){ let sex = ''; e === '女' ? sex = 'woman' : sex = 'man'; return sex; } }]).then(as=>{ console.log(as) }).catch(err=>{console.log(err)}) /** ❯◯ 男 ◯ 女 { sex: 'man' } */
transformer:
對用戶的問題進行轉換(!!!!我沒看懂這個是幹嗎的,有看懂的求指教)(Function)orm
when:
用來設定這個問題是否有必要被提問(Function),返回boolean,返回false表示忽略這個問題,該function的第一個參數爲近期回答的答案對象
req.prompt([{ type: "list", message:'請問你結婚了嗎?', name: 'isMarry', choices:['結婚', '未結婚'], },{ type: "input", message:'請問你孩子多大了?', name: 'age', when:function(e){ return e.isMarry === '結婚' } }]).then(as=>{ console.log(as) }).catch(err=>{console.log(err)}) /** ? 請問你結婚了嗎? 未結婚 { isMarry: '未結婚' } */
pageSize:
設置選擇列表每頁顯示的可選項數目(Number)
prefix:
給問題前面添加內容(String)
req.prompt([{ type: "string", message:'請輸入您的名字', name: 'name', prefix:'您好' }]).then(as=>{ console.log('您的名字是:'+as.name) }).catch(err=>{console.log(err)}) /** 您好 請輸入您的名字 ww 您的名字是:ww */
suffix:
給問題後面添加內容(String)
var ui = new req.ui.BottomBar(); // During processing, update the bottom bar content to display a loader // or output a progress bar, etc ui.updateBottomBar('new bottom bar content'); req.prompt([{ type: "string", message:'請輸入您的名字', name: 'name', prefix:'您好' }]).then(as=>{ console.log('您的名字是:'+as.name) }).catch(err=>{console.log(err)})
const req = require('inquirer'); const Rx = require('rxjs'); var prompts = new Rx.Subject(); req.prompt(prompts); prompts.next({ type: "string", message:'請輸入您的名字', name: 'name', }); prompts.next({ type: "string", message:'請輸入您的性別', name: 'sex', }); prompts.complete();