亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

Node.js編寫CLI的實例詳解

2019-11-19 16:34:15
字體:
來源:轉載
供稿:網友

Why Node.js?

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

  1. 對Javascript語言更加熟悉
  2. npm 完善的生態系統
  3. npm OS無關的包管理機制

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

看個demo

注: 此處的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命令行參數解析、核心命令以及插件機制。設計插件主要是為了保持整體功能的穩定,避免頻繁升級;同時開放能力,支持開發者接入,完善整體的生態。

掃描器的實現

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

首先,需要一個任務隊列,隊列里面存放不同的掃描任務。每個掃描任務依賴相關的文件信息或者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里面,并且寫入到配置文件里面。

本地模塊注冊機制

本地模塊發現機制

npm 的 registry服務

  1.  npm的查詢服務網址:http://registry.npmjs.org/
  2. registry網址后面跟上模塊名、版本好可以查詢模塊詳細信息,包括最新版本,以此來判斷模塊是否需要更新。比如:React的最新版本可以通過http://registry.npmjs.org/react/latest 來獲得
  3. 返回的JSON對象里面有個dist.tarball屬性,是某個版本的壓縮包地址

常用三方包分享

  1. osenv 方便的獲取不同系統的環境和目錄配置
  2. figlet 命令行炫酷的Logo生成器
  3. meow 命令行幫助命令封裝
  4. inquire 強大的用戶交互
  5. chalk 讓命令行的output帶有顏色
  6. easytable 表格信息展示,用于升級包的提示
  7. minimlist 用戶輸入的參數解析
  8. shelljs Node.js執行shell命令
  9. clui 進度條

遇到的問題

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

解決辦法: 由于windows下HOME環境變量并非默認存在,因此不能直接使用。判斷process.platform === ‘win32',優先使用HOME變量,否則使用USERPROFILE變量;建議使用osenv這個包。

2,OSX平臺運行feflow報錯: env: node/r: No such file or directory

解決辦法: 由于類unix系統的換行符號為/n,而windows系統為/n/r。修復換行問題??梢栽诠こ谈夸浵录?gitattributes文件,設置* text eol=lf,這樣git提交時就不會講LF轉換成CRLF

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产欧美在线观看| 成人高h视频在线| 国产中文字幕91| 日韩欧美在线一区| 91夜夜揉人人捏人人添红杏| 538国产精品视频一区二区| 精品人伦一区二区三区蜜桃免费| 欧美放荡办公室videos4k| 国产精品入口夜色视频大尺度| 911国产网站尤物在线观看| 欧美电影免费播放| 国产精品自产拍在线观| 国产精品永久免费| 久久香蕉频线观| 国产精品丝袜视频| 91精品视频免费看| 久久视频在线看| 日韩女优在线播放| 久久亚洲成人精品| 少妇精69xxtheporn| 亚洲色图综合网| 国产精品久久久久久久av大片| 亚洲欧美三级伦理| 亚洲视频欧洲视频| 中文字幕日韩在线播放| 免费成人高清视频| 2024亚洲男人天堂| 亚洲石原莉奈一区二区在线观看| 一区二区三区美女xx视频| www.欧美精品| 成人免费网站在线看| 欧美在线视频网站| 国产精品免费久久久| 中文字幕在线精品| 亚洲成人网在线观看| 色久欧美在线视频观看| 亚洲人成在线电影| 欧洲午夜精品久久久| 国产日韩欧美夫妻视频在线观看| 97视频国产在线| 国产精品美女在线观看| 欧美日韩国产区| 国产午夜精品全部视频在线播放| 日韩欧美a级成人黄色| 国产美女被下药99| 精品香蕉在线观看视频一| 久久理论片午夜琪琪电影网| 中文字幕国产精品| 欧美性猛交xxxx免费看| 国产精品久久久久久久久久久新郎| 欧美在线一区二区三区四| 欧美激情在线有限公司| 成人国产精品久久久久久亚洲| 亚洲色无码播放| 奇米一区二区三区四区久久| 亚洲综合日韩中文字幕v在线| 91精品久久久久久久久不口人| 日本高清+成人网在线观看| 国产亚洲欧美一区| 2019最新中文字幕| 欧美日韩爱爱视频| 国产精品人成电影在线观看| 亚洲第一精品久久忘忧草社区| 久久韩剧网电视剧| 亚洲免费视频一区二区| 亚洲最大成人网色| 国产在线精品一区免费香蕉| 精品亚洲国产成av人片传媒| 欧美激情综合色综合啪啪五月| 高清亚洲成在人网站天堂| 亚洲一区二区三区在线免费观看| 国产91成人在在线播放| 欧美福利视频在线| 91中文字幕一区| 亚洲综合精品一区二区| 91视频8mav| 97成人超碰免| 欧美一区二粉嫩精品国产一线天| 日韩的一区二区| 欧美激情啊啊啊| 91中文字幕一区| 国产在线视频2019最新视频| 国产成人综合精品在线| 日本成人免费在线| 91精品一区二区| 亚洲精品99久久久久| 日本中文字幕久久看| 久久久亚洲欧洲日产国码aⅴ| 91精品国产高清自在线看超| 日韩av观看网址| 欧美激情一区二区三区成人| 96国产粉嫩美女| 日韩黄在线观看| 亚洲国产精彩中文乱码av在线播放| 成人字幕网zmw| 国产成人精彩在线视频九色| 亚洲人成电影在线播放| 日韩av在线免费观看一区| 国产精品亚洲综合天堂夜夜| 久久久久久久香蕉网| 大伊人狠狠躁夜夜躁av一区| 国产日韩欧美自拍| 136fldh精品导航福利| 日韩精品免费视频| 性金发美女69hd大尺寸| 国产精品久久久久久久av电影| 午夜精品久久久久久久99热浪潮| 国产精品自产拍在线观| 国产精品视频最多的网站| 国产精品久久久久秋霞鲁丝| 亚洲国产精品美女| 精品精品国产国产自在线| 欧美日韩ab片| 久久视频免费观看| 亚洲老板91色精品久久| www.亚洲一二| 日韩精品在线播放| 2024亚洲男人天堂| 精品久久香蕉国产线看观看gif| 亚洲成色999久久网站| 午夜精品美女自拍福到在线| 欧美电影免费观看高清| 亚洲最新视频在线| 亚洲第一视频网| 欧美成人亚洲成人| 奇米4444一区二区三区| 精品久久久视频| 欧美高清视频在线播放| 久久夜精品va视频免费观看| 日韩欧美国产中文字幕| 欧美激情免费观看| 亚洲综合av影视| 国产日韩欧美一二三区| 色久欧美在线视频观看| 亚洲视频网站在线观看| 亚洲国产天堂久久综合网| 国产精品第1页| 国产精品久在线观看| 国产精品一区二区久久久| 亚洲欧美日韩视频一区| 日韩69视频在线观看| 91免费欧美精品| 日韩精品在线观看一区二区| 亚洲视频在线看| 青青草国产精品一区二区| 日本成熟性欧美| 欧美综合第一页| 亚洲午夜小视频| 成人黄色短视频在线观看| 国产97在线观看| 国产免费久久av| 久久免费精品视频| 69久久夜色精品国产69| 国产一区欧美二区三区| 亚洲香蕉成人av网站在线观看| 中文字幕亚洲欧美日韩在线不卡| 91情侣偷在线精品国产| 成人国产亚洲精品a区天堂华泰| 欧美一级淫片播放口| 在线观看欧美成人| 欧美日韩免费看| 国产成人一区二区三区| 亚洲国产精品99久久| 精品视频在线观看日韩|