WORK STORY / 04
建置並維護跨產品 Frontend Shared Packages
情境
Gorilla 是我第一次真正進入一個大量使用 Frontend Shared Packages 的開發環境。
公司的產品會使用許多共通的資料分析與視覺化能力,這些能力並不是每個 Application 各自重新實作,而是被整理成 Packages,再提供給不同產品組合使用。
其中包含像地圖互動、資料分析與其他共用前端能力。
這跟我以前理解的「抽幾個 Common Components」很不一樣。
這些 Package 本身就是需要被設計、發布、升級與長期維護的產品。
我的判斷與做法
我開始參與 Shared Packages 的建置與維護,也第一次真正面對:
什麼東西值得成為跨產品能力?
如果把 Application 特有的業務邏輯一起塞進 Package,共用層很快就會被某個產品綁死;
但如果 Package 抽象得太薄,每個產品又必須在外面重做大量相同整合。
所以在實作資料分析、地圖互動等能力時,我開始更在意:
- Package 應該負責到哪裡
- 哪些差異應該透過 API / Config 傳入
- 哪些狀態應該留在 Application
- 如何讓不同產品使用同一套核心能力,而不互相知道彼此的業務
後來這些 Shared Packages 也成為導入 Nx Monorepo 時非常重要的一部分,因為 Package 與 Consumers 的依賴關係終於可以放在同一個 Workspace 裡管理。
形成的結果
資料分析與共通前端能力可以由 Package 統一維護,再由不同產品依照自己的需求組合使用。
對我來說更重要的是,我第一次真正接觸到:
把前端能力當成 Platform Building Block 來設計。
而不是每遇到一個產品需求,就在 Application 裡重新完成一次。
留下的思考
這段經驗對我後面的影響很大。
以前談「共用」,我比較容易想到:
共用 Function、共用 Component。
在 Gorilla,我開始理解更大的共用單位可以是一整套完整能力:
它有自己的責任邊界、API、版本與生命週期,再被不同產品依賴。
這也成為我後來在 Clinico 持續做 Shared Architecture、LIFF 共用層與 Monorepo 時的重要基礎。