模組化日常:開源庫與私有庫重名

EyreFree發表於2018-01-02

主角:LPDNetworkingKit

起因:LPDNetworkingKit 本身是我們組在 GitHub 上開源的一個庫,然後,哎嘿,不知道啥原因,我們內網 GitLab 上還有一個私有的 LPDNetworkingKit,這個版本的程式碼還跟開源的不一樣,摻雜了業務程式碼。沒辦法,手頭正在編譯的 BKit 庫的發版需要依賴這個庫,於是,開始考慮怎麼處理。

經過:起先,為了防止跟開源的辣個版本衝突,我打算改個名,然後改完發版,搞定。然後修改依賴,跑起來,編譯失敗。一看,臥槽,BKit 不僅直接依賴了 LPDNetworkingKit,還依賴了一個 LPDMvvmKit,這個庫是開源的,並且也依賴了開源的 LPDNetworkingKit。哭了,照著改名發私有的思路繼續下去,估計後面不知道會起多少連鎖反應...果斷想其它辦法。然後,去查了一圈 CocoaPods 私有庫和公開庫重名的問題,發現不支援指定依賴來源,但是可以通過 tag 區分,於是乎開源的版本號是 0.3.0 這種,私有庫我們直接發了一個 3.2.1 的版本,然後在 BKit 裡指定到最新的版本,也就變成了指向我們私有的版本,哎嘿嘿,搞定。

PS:唔,後續發現,pod lib lintpod repo push--sources 指定的 source 的先後順序會影響重名庫的引用,如果多個 source 有多個重名庫的話,取前面一個 source 的,不知道是不是玄學。

結論:目前只是權宜之計,私有的 LPDNetworkingKit 後面會被清理掉,不然總有衝突的一天。


如有任何智慧財產權、版權問題或理論錯誤,還請指正。
https://juejin.im/post/5a4b53546fb9a0451e402cbc
轉載請註明原作者及以上資訊。

相關文章