1. 程式人生 > >inquirer.js —— 一個使用者與命令列互動的工具

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位數字"; } }];

效果:
input

2. confirm

const promptList = [{
    type: "confirm",
    message: "是否使用監聽?",
    name: "watch",
    prefix: "字首"
},{
    type: "confirm",
    message: "是否進行檔案過濾?",
    name: "filter",
    suffix: "字尾",
    when: function(answers) { // 當watch為true的時候才會提問當前問題
        return answers.watch
    }
}];

效果:
confirm_y
confirm_n

3. list

const promptList = [{
    type: 'list',
    message: '請選擇一種水果:',
    name: 'fruit',
    choices: [
        "Apple",
        "Pear",
        "Banana"
    ],
    filter: function (val) { // 使用filter將回答變為小寫
        return val.toLowerCase();
    }
}];

效果:
list_1
list

4. rawlist

const promptList = [{
    type: 'rawlist',
    message: '請選擇一種水果:',
    name: 'fruit',
    choices: [
        "Apple",
        "Pear",
        "Banana"
    ]
}];

效果:
rawlist

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"
        }
    ]
}];

效果:
expend_1
expend_2

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 // 設定行數
}];

效果:
checkbox_sep
checkbox_size

7. password

const promptList = [{
    type: "password", // 密碼為密文輸入
    message: "請輸入密碼:",
    name: "pwd"
}];

效果:
pwd

8. editor

const promptList = [{
    type: "editor",
    message: "請輸入備註:",
    name: "editor"
}];

效果:
editor_inset
editor_res

寫在後面:

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,具備最高許可權