久久96国产精品久久久-久久发布国产伦子伦精品-久久精品国产精品青草-久久天天躁夜夜躁狠狠85麻豆

技術員聯盟提供win764位系統下載,win10,win7,xp,裝機純凈版,64位旗艦版,綠色軟件,免費軟件下載基地!

當前位置:主頁 > 教程 > 服務器類 >

Node.js編寫CLI的實例代碼

來源:技術員聯盟┆發布時間:2017-10-24 12:48┆點擊:

常用的用來編寫CLI的語言有 python, ruby, perl, Node.js等等。 為什么選取Node.js作為CLI的語言編寫工具呢?有三個理由:

對Javascript語言更加熟悉

npm 完善的生態系統

npm OS無關的包管理機制

主要原因還是歸咎于npm 完善的生態,目前npm官方有47.5萬個三方包可供使用,你可以很方便的使用一些已經編寫的很不錯的輪子去幫你快速開發。另一方面,你不需要考慮跨平臺的安裝問題,比如OSX上的homebrew、Debian的aptitude、CentOS 上的yum。如果使用shell或者其它語言來編寫CLI,需要針對各個主流OS來做兼容并且發布到不同的平臺。

看個demo

Node.js編寫CLI的實例代碼 三聯

注: 此處的Logo使用的是figlet這個npm包來幫助生成

npm關聯CLI的基本原理

如何讓Node.js編寫的包可執行?其實很簡單,只需要在package.json里面增加一個bin字段。模塊發布到npm上后,開發者安裝這個包的時候會檢查是否有bin字段,如果有bin字段則會使用軟鏈接的方式創建可以全局使用的命令。

如果模塊采用全局安裝的方式,對于類unix系統,會在/usr/local/bin目錄創建軟鏈接,對于windows系統,在C:\Users\username\AppData\Roaming\npm目錄創建軟鏈接。

如果模塊采用局部安裝的方式,則會在項目內的./node_modules/.bin目錄創建軟鏈接。

配置好的package.json如下:

… "description": "A command line tool aims to improve front-end engineer workflow.", "main": "lib/index.js", "bin" : { "feflow" : "./bin/feflow" } …

CLI基本命令設計

$ feflow --help A command line tool aims to improve front-end engineer workflow Usage: feflow [options] [command] Commands: init Choose a scaffold to initialize project. scan --receiver Scan a group and mail to receiver install <plugin> Install a plugin or a yeoman generator. Options: --version, -[vV] Print version and exit successful --help, Print this help and exit successf

Feflow的技術架構

Feflow總體分為3個模塊,包括parser命令行參數解析、核心命令以及插件機制。設計插件主要是為了保持整體功能的穩定,避免頻繁升級;同時開放能力,支持開發者接入,完善整體的生態。

Node.js編寫CLI的實例代碼

掃描器的實現

在一個工程項目中,有各種各樣的規范,比如項目命名規范、描述規范、目錄結構規范、README.md規范,是否增加基本監控等等。編寫掃描器scanner,對某個Group里面的所有業務項目進行掃描,將不符合規范的倉庫和不符合規范的地方列舉出來,并且撈出責任人。最后通過郵件及定時任務發送給相關同學,并且敦促修改。掃描器流程圖如下:

Node.js編寫CLI的實例代碼

首先,需要一個任務隊列,隊列里面存放不同的掃描任務。每個掃描任務依賴相關的文件信息或者Commit信息,這個時候需要調用Git code提供的三方API進行文件信息拉取。之后,需要編寫一個規則引擎,這個規則引擎里面有多個規范相關的檢查工具,解析完成后會將結果生成HTML格式的字符串。最后調用郵件服務和定時任務服務去通知相關開發者。

插件機制設計

$ feflow install <plugin> # 安裝一個插件, --force則會強制安裝 $ feflow remove <plugin> # 卸載一個插件 $ feflow list # 列舉出所有插件信息 $ feflow list <plugin> # 列舉某個插件信息

插件機制實現

插件機制的實現包括兩個部分:插件注冊機制和插件發現機制。feflow要求插件必須以feflow-plugin-開頭或者 generator-開頭,generator作為一種特殊的插件,插件代碼以npm包的形式存儲和管理。運行feflow install plugin命令時,會通過npm 的 regsitry檢查是否存在插件,如果存在,會檢查當前插件是否是最新版本。如果不是最新版本,則提示用戶是否需要更新。然后將插件下載到Home目錄下的.feflow目錄(Windows系統為"C:\Users\username\.feflow" 目錄)下的node_modules里面,并且寫入到配置文件里面。

本地模塊注冊機制

Node.js編寫CLI的實例代碼

本地模塊發現機制

Node.js編寫CLI的實例代碼

npm 的 registry服務

 npm的查詢服務網址:

registry網址后面跟上模塊名、版本好可以查詢模塊詳細信息,包括最新版本,以此來判斷模塊是否需要更新。比如:React的最新版本可以通過 來獲得

返回的JSON對象里面有個dist.tarball屬性,是某個版本的壓縮包地址

常用三方包分享

osenv 方便的獲取不同系統的環境和目錄配置

figlet 命令行炫酷的Logo生成器

meow 命令行幫助命令封裝

inquire 強大的用戶交互

chalk 讓命令行的output帶有顏色

easytable 表格信息展示,用于升級包的提示

minimlist 用戶輸入的參數解析

shelljs Node.js執行shell命令

clui 進度條

遇到的問題

1,windows下用戶未設置HOME環境變量導致報錯