1. 為什麼要開發這個vscode外掛?
在flutter專案中,我們現在開發了一些自己的元件庫,依賴庫上傳到公司的git,通過如下方式引用。

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

所以要讓本地plugin的修改不丟失,就需要git clone到本地並指定路徑,這樣修改就不會丟失。
開發這個vscode外掛的主要目的就是實現自動git clone到本地,不讓plugin程式碼修改丟失。
2. 現有的plugin管理方案
其實上面開發plugin丟程式碼的問題,我們已經通過ci.sh指令碼解決了,為什麼還要開發這個外掛呢?


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

依賴庫的版本不是由pubspec.yaml決定的,而是這個路徑下面的子目錄決定的,所以上線前必須執行ci.sh指令碼。
如果這個依賴庫要指定版本,就必須到ci.sh修改checkout到指定tag的指令碼,如果沒有修改就會直接導致錯誤版本的依賴庫上線。
所以如果依賴庫有多個的話,需要仔細review ci指令碼,上線工作量比較大而且不靠譜。
3.flutter-dependency-manager展示

有三種item:
1.使用版本號指定的github模式,通常都是比較著名的第三方庫,不需要修改。
2.使用git url指定的模式,通常是公司內部開發的元件庫或者業務模組化庫,需要定期修改。
3.使用本地路徑指定的模式,是元件開發中的模式,可以進行聯調和修改。
外掛提供兩個操作,1.把git url模式下載到本地路徑,進行修改和聯調。2.開發完成後上傳到git並打tag,把local path模式改成git url模式。
注意只有藍色文字對應的操作是這個外掛提供的,其他的操作需要自己使用git命令和工具完成。
git clone後會自動建立workspace,可以很方便的進行外掛程式碼的瀏覽和修改,介面如下。


因為打包機上面並沒有裝這個外掛也沒有plugin目錄,所以如果還有依賴庫是通過path方式引用的,會直接打包失敗,這是可以形成一個強制版本檢查。
目前已經上架vscode外掛市場,感興趣的同學可以下載用一下。
