且看這個Node全棧框架,實現了個Cli終端引擎,可無限擴充命令集

2022-06-08 18:02:34

背景介紹

一般而言,大多數框架都會提供Cli終端工具,用於通過命令列執行一些工具類指令碼

CabloyJS提供的Cli終端工具卻與眾不同。更確切的說,CabloyJS提供的是Cli終端引擎,由一套Cli終端執行機制+眾多命令集組成。CabloyJS是一個基於模組化體系的全棧框架,因此,命令集也由具體的模組提供。因此,我們可以通過安裝各種模組來動態新增可以執行的命令集,從而讓CabloyJS的Cli終端變得無比強大、功能也無比豐富

特點

  1. 可無限擴充:由於是通過安裝模組來提供命令集,因此可以無限擴充

  2. 同時支援開發環境生產環境:當我們在命令列輸入指令後,系統會自動呼叫後端服務的API介面,執行具體的指令碼邏輯。而後端服務既可以是在本地執行的開發服務,也可以是在遠端執行的生成環境

  3. 簡化系統管理運維工作:正是由於Cli終端可以用於生產環境,所以許多後臺管理工作都可以通過API介面暴露出來,從而可以直接通過命令列進行驅動

  4. 完善的許可權控制:後端服務暴露的所有API介面都使用資源授權機制進行控制,Cli終端通過開放認證Token進行受控存取

如何使用

Cli終端的使用規範如下:

$ npm run cli [command] [args] -- [options]

- command

  1. 命名規範:由於command由業務模組提供,為了進一步規範管理,在業務模組內部還將提供的commands進行分組。因此,command命名規範如下:
moduleName:groupName:commandName

比如,模組a-clibooster提供了一個分組create,分組create提供了一個module 命令,那麼,完整的command命名就是:a-clibooster:create:module

  1. 特殊約定:為了簡化command的輸入,特別做了如下約定:

    1. 如果模組名稱是a-clibooster,則可以不輸入

    2. 如果分組名稱是default,則可以不輸入

舉例如下:

全稱 簡稱
a-clibooster:default:list ::list
a-clibooster:create:module :create:module
test-party:default:demo test-party::demo

- args

命令後是否可以跟隨引數,跟隨多少引數,由具體的命令決定,例如:

# 安裝模組test-flow和test-note
$ npm run cli :store:sync test-flow test-note

- options

命令後是否可以跟隨選項,跟隨多少選項,也由具體的命令決定,例如:

# 向套件test-suite1新增模組test-module1
$ npm run cli :create:module test-module1 -- --suite=test-suite1

- help

如果我們不知道如何使用某個命令,可以直接列印出幫助資訊,例如

$ npm run cli :create:module -- --help

- version

還可查詢某個命令的版本號,例如:

$ npm run cli :create:module -- --version

- 列出命令

如果要查詢當前系統一共支援多少命令,可以按如下操作:

# 列出所有命令
$ npm run cli ::list
# 列出模組test-party提供的命令
$ npm run cli ::list  -- --module=test-party
# 列出模組a-clibooster內create分組提供的命令
$ npm run cli ::list  -- --module=a-clibooster --group=create

內建命令

CabloyJS通過模組a-clibooster內建了大量常用的命令,具體如下:

命令 描述
::list 列出所有命令
:token:add 新增開放認證Token
:token:delete 刪除開放認證Token
:token:list 列出所有開放認證Token
:tools:babel 編譯JS檔案
:tools:icons 處理圖示模組
:create:suite 新建套件
:create:module 新建模組
:create:atom 新建原子型別
:create:controller 新建控制器(包括Route、Controller、Service一套檔案)
:store:sync 安裝來自Cabloy商店的套件/模組
:store:publish 將本地開發的套件/模組釋出到Cabloy商店

簡寫命令

CabloyJS還提供了更多簡寫命令,可以親自體驗一番,一定會顯著提升開發效率

$ npm run cli
$ npm run cli :
$ npm run cli ::
$ npm run cli :default:
$ npm run cli :create:
$ npm run cli test-party:
$ npm run cli test-party::
$ npm run cli test-party:default:

如何建立Cli命令

如果我們想建立自己的Cli命令,也非常簡便,參見檔案:如何建立Cli命令

相關連結