inquirer.js —— 一個使用者與命令列互動的工具
寫在前面:
開始通過npm init
建立package.json
的時候就有大量與使用者的互動(當然也可以通過引數來忽略輸入);而現在大多數工程都是通過腳手架來建立的,使用腳手架的時候最明顯的就是與命令列的互動,如果想自己做一個腳手架或者在某些時候要與使用者進行互動,這個時候就不得不提到inquirer.js
了。
零. 介紹
由於互動的問題種類不同,inquirer為每個問題提供很多引數:
- type:表示提問的型別,包括:
input
,confirm
,list
,rawlist
,expand
,checkbox
,password
,editor
; - name: 儲存當前問題回答的變數;
- message:問題的描述;
- default:預設值;
- choices:列表選項,在某些
type
下可用,並且包含一個分隔符(separator); - validate:對使用者的回答進行校驗;
- filter:對使用者的回答進行過濾處理,返回處理後的值;
- transformer:對使用者回答的顯示效果進行處理(如:修改回答的字型或背景顏色),但不會影響最終的答案的內容;
- when:根據前面問題的回答,判斷當前問題是否需要被回答;
- pageSize:修改某些
type
型別下的渲染行數; - prefix:修改
message
預設字首; - suffix:修改
message
預設字尾。
上面的屬性(除
transformer
外)在下面都有對應使用。
一. 使用
0. 語法結構
const inquirer = require('inquirer');
const promptList = [
// 具體互動內容
];
inquirer.prompt(promptList).then(answers => {
console.log(answers); // 返回的結果
})
1. input
const promptList = [{
type: 'input',
message: '設定一個使用者名稱:',
name: 'name',
default : "test_user" // 預設值
},{
type: 'input',
message: '請輸入手機號:',
name: 'phone',
validate: function(val) {
if(val.match(/\d{11}/g)) { // 校驗位數
return val;
}
return "請輸入11位數字";
}
}];
效果:
2. confirm
const promptList = [{
type: "confirm",
message: "是否使用監聽?",
name: "watch",
prefix: "字首"
},{
type: "confirm",
message: "是否進行檔案過濾?",
name: "filter",
suffix: "字尾",
when: function(answers) { // 當watch為true的時候才會提問當前問題
return answers.watch
}
}];
效果:
3. list
const promptList = [{
type: 'list',
message: '請選擇一種水果:',
name: 'fruit',
choices: [
"Apple",
"Pear",
"Banana"
],
filter: function (val) { // 使用filter將回答變為小寫
return val.toLowerCase();
}
}];
效果:
4. rawlist
const promptList = [{
type: 'rawlist',
message: '請選擇一種水果:',
name: 'fruit',
choices: [
"Apple",
"Pear",
"Banana"
]
}];
效果:
5. expand
const promptList = [{
type: "expand",
message: "請選擇一種水果:",
name: "fruit",
choices: [
{
key: "a",
name: "Apple",
value: "apple"
},
{
key: "O",
name: "Orange",
value: "orange"
},
{
key: "p",
name: "Pear",
value: "pear"
}
]
}];
效果:
6. checkbox
const promptList = [{
type: "checkbox",
message: "選擇顏色:",
name: "color",
choices: [
{
name: "red"
},
new inquirer.Separator(), // 新增分隔符
{
name: "blur",
checked: true // 預設選中
},
{
name: "green"
},
new inquirer.Separator("--- 分隔符 ---"), // 自定義分隔符
{
name: "yellow"
}
]
}];
// 或者下面這樣
const promptList = [{
type: "checkbox",
message: "選擇顏色:",
name: "color",
choices: [
"red",
"blur",
"green",
"yellow"
],
pageSize: 2 // 設定行數
}];
效果:
7. password
const promptList = [{
type: "password", // 密碼為密文輸入
message: "請輸入密碼:",
name: "pwd"
}];
效果:
8. editor
const promptList = [{
type: "editor",
message: "請輸入備註:",
name: "editor"
}];
效果:
寫在後面:
Everything will be ok in the end, if it’s not ok, it’s not the end.
相關推薦
inquirer.js —— 一個使用者與命令列互動的工具
寫在前面: 開始通過npm init 建立package.json的時候就有大量與使用者的互動(當然也可以通過引數來忽略輸入);而現在大多數工程都是通過腳手架來建立的,使用腳手架的時候最明顯的就是與命令列的互動,如果想自己做一個腳手架或者在某些時候要與使用者進
C# 編寫命令列互動工具——實時輸出_獲取執行結果
我們在寫程式的時候通常會用到命令列工具。 如Ping 某個網段,寫個登錄檔,啟動項,或者感謝其他壞事。 在網上查了一下,多數都說用C# 做命令列互動需要做很多很多的邏輯處理。那麼今天博主也來寫一個簡單一點的。 首先我們建一個CmdUtils類,然後編寫我們需要的方法 那麼在
【C程式編譯連結】gcc使用命令介紹 gcc的使用簡介與命令列引數說明
1.gcc或者g++安裝rpm -qa|grep gcc ==>檢查gcc是否安裝gcc -v ==>檢查gcc版本 編譯器會在可執行檔案中植入一些資訊,可執行檔案會變大。一般開發時候使用 -g ,編譯一個 “release 版本” 時不使用 -g 編譯。gcc如果是最新的則不重
Java中eclipse與命令列向main函式傳遞引數
我們知道main函式是java程式的入口,main函式的引數型別是String[]。 1.Eclipse中向main方法傳遞引數 例如: public class Mytest { public static void main(String[] args) {
用go編寫區塊鏈系列之3--持久化與命令列
在上一篇文章中我們構建了一個帶PoW挖礦功能的區塊鏈。我們這個區塊鏈已經很接近一個全功能的區塊鏈,但是它還缺少一些很重要的特性。這一章中我們將將實現將區塊鏈資料存入資料庫,並且編寫一個簡單的命令列介面去與區塊鏈進行互動。本質上區塊鏈是一個分散式資料庫,在這裡我們忽略“分散式”而只關注資料庫。 本
推薦一個高大上的網易雲音樂命令列播放工具:musicbox
網易雲音樂上有很多適合程式猿的歌單,但是今天文章介紹的不是這些適合程式設計師工作時聽的歌,而是一個用Python開發的開源播放器,專門適用於網易雲音樂的播放。這個播放器的名稱為MusicBox, 特色是用命令列版本執行音樂的播放。 github地址: https://github.com/darkness
IPython 7.2.0 釋出,Python 命令列互動
IPython 是 Python 的原生互動式 shell 的增強版,可以完成許多不同尋常的任務,比如幫助實現並行化計算;主要使用它提供的互動性幫助,比如程式碼著色、改進了的命令列回撥、製表符完成、巨集功能以及改進了的互動式幫助。 IPython 7.2.0 帶來了一些小的 bug 修正、改進和新的配
自己寫一個類,模擬命令列引數
1,命令列引數 #parser = argparse.ArgumentParser() #parser.add_argument('dataroot', help='path to dataset of kaggle ultrasound nerve segmentation') ## pars
Linux桌面與命令列切換
1、首先在安裝Linux的時候是選則Desktop桌面方式安裝 2、切換命令 2.1快捷鍵:Ctrl+Alt+F1 切換到桌面模式 &nb
C++-main函式與命令列引數
1、main函式的概念 C語言中main函式稱之為主函式 —個C程式是從main函式開始執行的 下面的main函式定義正確嗎? //1 main(){ } //2 void main(){ } //3 int main(){ } //4 int main(
CentOS6.8 切換桌面模式與命令列模式
方法一: 修改配置檔案: /etc/inittab 各選項含義如下: 0:逐步終止程序模式,程序將有序的終止,關機時系統處於這個執行級別; 1:單使用者模式,用於系統維護,只有少數程序執行,大部分服務
centos6.5 切換桌面模式與命令列模式
筆者使用官網下載的iso:CentOS-6.5-x86_64-bin-DVD1.iso 虛擬機器軟體:Oracle VM VirtualBox 筆者裝完centos之後,介面直接進入命令列模式,鑑於linux優化的需要,筆者找尋解決的方案,找尋了很久,終於找到了。 下面是方
Ubuntu 圖形桌面與命令列介面 切換快捷鍵
1、Ubuntu 進入命令列: //快捷鍵 Ctrl+Alt+F1 2、Ubuntu 退出命令列: //快捷鍵 Ctrl+Alt+F7 3、Ubuntu 進入命令列視窗:
一個完整的命令列上傳程式碼到git的過程
//進入到工程資料夾下 1.$ cd 到工程資料夾下 //初始化 2.$ git init //將所有資料夾新增到倉庫 3.$ git add . 4.$ git commit -m"新增程式
一個簡單的命令列解析類
struct USER_COMMAND { public: USER_COMMAND(CString m_strCmd) { int iIndex1 = 0, iIndex2 = 0; while(1) { iIndex2 = m_strCmd.Fin
【Go】筆記二 | 命令原始碼檔案與命令列引數
核心知識 自定義命令引數 建立私有的命令引數容器 首知 環境變數 GOPATH 指向的是一個或多個工作區,而每個工作區中都會有以程式碼包為基本組織形式的原始碼檔案。 原始碼檔案又分為三種,即:命令原始碼檔案、庫原始碼檔案和測試原始碼檔案,它們都有
Tensorflow:tf.app.run()與命令列引數解析
首先給出一段常見的程式碼: if __name__ == '__main__': tf.app.run()12 它是函式入口,通過處理flag解析,然後執行main函式(或者接下來提到的xxx())(最後含有tf.app.run()的檔案,在此行之前肯定能找到def main
Cobra 一個快速建立命令列應用程式的工具
概述cobra庫是golang的一個開源第三方庫,能夠快速便捷的建立命令列應用程式。優勢:cobra可以快速建立CLI程式,使我們更專注於命令需要處理的具體的業務邏輯。舉兩個例子:hugo server --port=1313git clone URL --bare都是命令列
RedHat 9圖形介面與命令列介面切換
Redhat要可以在命令列介面及視窗介面間相互切換,必需保證啟動模式是預設啟動動命令列介面,然後再在命令列介面輸入startx之類命令啟動到視窗介面,然後可以按ctrl+alt+F1回到命令列介面,ctrl+alt+F7回到視窗介面 要使系統預設啟動到命令列介面,需要如下操
linux基礎學習之圖形介面與命令列介面切換
首先,開機時進入到LINUX的圖形介面 緊接著,選中左上角的Applications----system tools-----terminal 選項 注意,使用者必須為ROOT,具備最高許可權