GoFrame - 強大的工具鏈集合

gqcn發表於2020-02-12

gf tool chain

GF v1.9版本開始提供了gf命令列開發輔助工具,將會隨著框架發展不斷完善,作為未來框架發展的一個重要組成部分,工具開源專案地址:https://github.com/gogf/gf-cli

我們推薦通過下載安裝預編譯的二進位制使用。工具安裝成功後,可以通過gf或者gf -h檢視所有支援的命令。複雜的命令可以通過gf help COMMAND或者gf COMMAND -h檢視更詳細的使用幫助資訊,例如:gf help gengf gen -h

工具執行初始化時將會自動開啟Go Modules特性並設定反向代理地址為 https://goproxy.cn

當前幫助文件以gf cli v0.5.0版本為例進行簡單的介紹,詳細的介紹資訊請檢視命令列幫助資訊。本章內容資訊可能會有滯後,最新的具體詳細介紹請檢視工具幫助資訊。

$ gf
USAGE
    gf COMMAND [ARGUMENT] [OPTION]

COMMAND
    get        install or update GF to system in default...
    gen        automatically generate go files for ORM models...
    run        running go codes with hot-compiled-like feature...
    init       initialize an empty GF project at current working directory...
    help       show more information about a specified command
    pack       packing any file/directory to a resource file, or a go file
    build      cross-building go project for lots of platforms...
    docker     create a docker image for current GF project...
    update     update current gf binary to latest one (might need root/admin permission)
    install    install gf binary to system (might need root/admin permission)
    version    show current binary version info

OPTION
    -?,-h      show this help or detail for specified command
    -v,-i      show version information

ADDITIONAL
    Use 'gf help COMMAND' or 'gf COMMAND -h' for detail about a command, which has '...'
    in the tail of their comments.

install 工具安裝

使用方式:./gf install

該命令往往是在gf命令列工具下載到本地後執行(注意執行許可權),用於將gf命令安裝到系統環境變數預設支援的目錄路徑中,以便於在系統任何的地方直接可以使用gf工具。

部分系統需要管理員許可權支援。

如果是MacOS下使用zsh的小夥伴可能會遇到別名衝突問題,可以通過alias gf=gf來解決。

version 工具版本檢視

使用方式:

  • gf -v
  • gf -i
  • gf version

用以檢視當前gf命令列工具編譯時的版本資訊。例如:

$ gf -v
GoFrame CLI Tool v0.4.5, https://goframe.org
Built Detail:
  Go Version:  go1.13.5
  GF Version:  v1.10.1
  Git Commit:  0ab2a4a9e753f4f5fae1e96ecf40cae94895d494
  Built Time:  2020-01-05 11:30:39

init 專案初始化

使用方式:gf init [NAME]

我們可以使用init命令在當前目錄生成一個示例的GF空框架專案,並可給定可選的專案名稱引數。生成的專案目錄結構僅供參考,根據業務專案具體情況可自行調整。

GF框架開發推薦統一使用官方的go module特性進行依賴包管理,因此空專案根目錄下也有一個go.mod檔案。

build 交叉編譯

使用方式:gf build FILE [OPTION]

僅限於交叉編譯使用到GF框架的專案,支援絕大部分常見系統的直接交叉編譯。並且支援配置檔案管理編譯選項、嵌入編譯時變數,預設嵌入的編譯時變數包括(參考gf -v):

  1. 當前Go版本。
  2. 當前GF版本。
  3. 當前編譯時間。
  4. 當前Git Commit(如果存在)。

編譯配置檔案選項示例(預設讀取config.toml):

[compiler]
    name     = "my-app"
    version  = "1.0.0"
    arch     = "i386,amd64"
    system   = "linux,windows,darwin"
    output   = ""
    path     = "./bin"
    extra    = "-ldflags \"-s -w\""
    # 自定義編譯時內建變數
    [compiler.VarMap]
        author = "john"
        email  = "john@goframe.org"

配置選項的釋義同命令列同名選項。

編譯時的內建變數可以在執行時通過gbuild包獲取。

gen 程式碼生成命令

使用方式:gf gen model [PATH] [OPTION]

gen命令用以自動化從資料庫直接生成模型檔案。可以參考gf-demos示例專案中的模型檔案即是通過該命令生成的:https://github.com/gogf/gf-demos/tree/master/app/model

模型生成採用了Active Record設計模式。該命令將會根據資料表名生成對應的目錄,該目錄名稱即資料表包名。目錄下自動生成 3 個檔案:

  1. 資料表名.go 自定義檔案,開發者可以自由定義填充的程式碼檔案,僅會生成一次,每一次模型生成不會覆蓋。
  2. 資料表名_entity.go 表結構檔案,根據資料表結構生成的結構體定義檔案,包含欄位註釋。資料表在外部變更後,可使用gen命令重複生成更新該檔案。
  3. 資料表名_model.go 表模型檔案,為資料表提供了許多便捷的CURD操作方法,並可直接查詢返回該表的結構體物件。資料表在外部變更後,可使用gen命令重複生成更新該檔案。

資料表模型生成支援的資料庫型別為:MySQL/MariaDBPostgreSQLSQLiteSQLServer。目前暫不支援Oracle,若有需求請聯絡作者。

run 熱編譯(自動編譯)

使用方式:gf run FILE

由於Go是不支援熱編譯特性的,每一次程式碼變更後都要重新手動停止、編譯、執行程式碼檔案。run命令也不是實現熱編譯功能,而是提供了自動編譯功能,當開發者修改了專案中的go檔案時,該命令將會自動編譯當前程式,並停止原有程式,執行新版的程式。

run命令會遞迴監控當前執行目錄的所有go檔案變化來實現自動編譯。

get 依賴包下載

使用方式:gf get PACKAGE

gf get命令和go get命令類似,內部自動提供了代理設定功能,並智慧識別並設定最快的下載代理地址。

docker 映象編譯

使用方式:gf docker [FILE] [OPTIONS]

自動編譯並生成docker映象。非必需FILE引數為編譯檔案路徑,預設為main.go。非必需引數OPTIONSdocker build命令相同引數及選項。

update 工具更新

使用方式:gf update

該命令用以檢測gf命令列工具的版本,並自動執行版本更新。

部分系統需要管理員許可權支援。如果更新失敗,請手動重新下載更新。

pack 二進位制打包

使用方式:gf pack SRC DST

該命令用以將任意的檔案打包為二進位制檔案,或者Go程式碼檔案,可將任意檔案打包後隨著可執行檔案一同釋出。此外,在build命令中支援打包 + 編譯一步進行,具體請檢視build命令幫助資訊。

help 命令列幫助

使用方式:

  • gf -h
  • gf -?
  • gf help [COMMAND]
  • gf [COMMAND] -h

任何不懂的,就用help看看吧。

更多原創文章乾貨分享,請關注公眾號
  • GoFrame - 強大的工具鏈集合
  • 加微信實戰群請加微信(註明:實戰群):gocnio

相關文章