WORK STORY / 04

把多品牌外部服務收斂成多 App Monorepo

CONTEXT

情境

公司當時準備推出一項新的外部服務,旗下三個品牌都需要建立自己的形象網站。

從畫面看,它們差異很大:文案不同、圖片不同、品牌色不同。

但真正進到程式碼後,我發現九成以上的 Template、Component 行為與頁面結構其實相同。

如果直接建立三套獨立專案,短期開發很快,但之後每增加一個功能,就必須同步修改三次;只要其中一套漏掉或採用不同做法,原本只是品牌差異,最後就會變成程式架構差異。

DECISION & ACTION

我的判斷與做法

所以我沒有把「三個品牌」直接等同成「三份程式碼」。

我先把本質相同的 Template、UI 行為與樣式邏輯整理成共享能力,把真正屬於品牌的文案、圖片、Theme 與特殊需求留成可配置或覆寫的差異點。

接著將這些品牌 Application 與共享模組集中到同一個 Nx monorepo 管理。

這樣每個品牌仍然是自己的 App,但共同能力只有一個維護來源。

OUTCOME

形成的結果

三個品牌可以維持各自的產品樣貌,同時共享相同的工程基礎。

共通功能更新時不需要在不同 Repository 重複修改,新增品牌也不必重新複製一套網站再開始分叉。

原本可能逐漸演變成三套產品的程式碼,被維持成:

多個 App,共享一套核心能力。
REFLECTION

留下的思考

這也是我後來越來越重視 Monorepo 的原因。

它對我來說不是「把很多 Repository 搬到同一個 Folder」而已,而是:

當多個產品其實共享同一份工程知識時,讓程式碼的結構也忠實反映這件事。

品牌可以各自演進,但本質相同的能力不應該因為部署單位不同,就產生多份 Source of Truth。