vscode外掛-flutter業務模組化管理

俞億發表於2019-07-25

1. 為什麼要開發這個vscode外掛?

在flutter專案中,我們現在開發了一些自己的元件庫,依賴庫上傳到公司的git,通過如下方式引用。

vscode外掛-flutter業務模組化管理
從主工程聯調這個庫時,可以聯調(從主工程直接跳轉到plugin中)可以直接修改,修改後再次hot resart可以生效。

但是過一會程式碼就丟了,原因就是上面的引用方式並沒有指定本地路徑,所以flutter統一把這些依賴庫下載到一個本地快取路徑了。

vscode外掛-flutter業務模組化管理
這個本地快取目錄裡面,是沒有用git管理的,這裡只是一個臨時快取,所以只要從在flutter專案中使用flutter packages get,這些就會被直接覆蓋。

所以要讓本地plugin的修改不丟失,就需要git clone到本地並指定路徑,這樣修改就不會丟失。

開發這個vscode外掛的主要目的就是實現自動git clone到本地,不讓plugin程式碼修改丟失。

2. 現有的plugin管理方案

其實上面開發plugin丟程式碼的問題,我們已經通過ci.sh指令碼解決了,為什麼還要開發這個外掛呢?

vscode外掛-flutter業務模組化管理
現有的方案是把外掛統一放到vendor目錄下面,在pubspec.yaml檔案中使用path進行引用。

vscode外掛-flutter業務模組化管理
並且使用shell指令碼進行更新。

但是這帶來一個非常嚴重的問題。

vscode外掛-flutter業務模組化管理
pubspec.yaml檔案是進行統一依賴庫管理的檔案,上線前需要對所有的依賴庫版本進行檢查,向上圖這樣的方式根本不能確定即將上線的依賴庫的版本。

依賴庫的版本不是由pubspec.yaml決定的,而是這個路徑下面的子目錄決定的,所以上線前必須執行ci.sh指令碼。

如果這個依賴庫要指定版本,就必須到ci.sh修改checkout到指定tag的指令碼,如果沒有修改就會直接導致錯誤版本的依賴庫上線。

所以如果依賴庫有多個的話,需要仔細review ci指令碼,上線工作量比較大而且不靠譜。

3.flutter-dependency-manager展示

vscode外掛-flutter業務模組化管理
這個外掛就是對pubspec.yaml檔案進行管理的,把右邊的檔案對映成左邊的樹狀結構檢視。

有三種item:

1.使用版本號指定的github模式,通常都是比較著名的第三方庫,不需要修改。

2.使用git url指定的模式,通常是公司內部開發的元件庫或者業務模組化庫,需要定期修改。

3.使用本地路徑指定的模式,是元件開發中的模式,可以進行聯調和修改。

外掛提供兩個操作,1.把git url模式下載到本地路徑,進行修改和聯調。2.開發完成後上傳到git並打tag,把local path模式改成git url模式。

注意只有藍色文字對應的操作是這個外掛提供的,其他的操作需要自己使用git命令和工具完成。

git clone後會自動建立workspace,可以很方便的進行外掛程式碼的瀏覽和修改,介面如下。

vscode外掛-flutter業務模組化管理
外掛自動生成的目錄結構如下,所有的外掛程式碼不在主工程中,主工程只是使用path或者git url進行引用。
vscode外掛-flutter業務模組化管理
上線之前,可以通過外掛檢查所有的依賴庫,必須確保所有依賴庫都是使用git url和tag方式進行引用的,這樣可以確保上線的是指定的版本。

因為打包機上面並沒有裝這個外掛也沒有plugin目錄,所以如果還有依賴庫是通過path方式引用的,會直接打包失敗,這是可以形成一個強制版本檢查。

目前已經上架vscode外掛市場,感興趣的同學可以下載用一下。

vscode外掛-flutter業務模組化管理

相關文章