為什麼前端工程越來越愛使用 Monorepo 架構
Using single git repository to manage multiple apps and libraris
Monorepository (簡稱 Monorepo) 概念雖然有一段歷史了,但這個名詞卻是近幾年才變得如此熱門。自己公司也是這半年才導入這個架構,再嚐到許多甜頭後想寫一篇來介紹它,希望多一點人認識此架構。這篇並不會有程式碼,而是從現有架構痛點開始 (Single Repo Monolith、Multi-repo)、為什麼要用 Monorepo 等,若想要實際導入可以參考 nx.dev
現有架構遇到了什麼問題 ?
20 年前的前端相當單純,但在這 6 ~7 年卻產生巨變,現在應該沒幾個人只用純 html/css/js 做出網站了,大部分都是以前端框架出發搭配一大堆的 dependencies (SCSS preprocessors、task managers、npm、typescript…) 。當團隊發展到一定規模又會分出好幾個不同產品,每一個產品使用的 dependencies 都不大相同使得維護變得困難,到底要怎麼做到避免重覆程式碼以及分好責任歸屬 呢?直接用實際例子會清楚許多
若 shop.com 公司今天有數個專案,每一個專案都有不同負責的團隊
購物網站 shop.com (React)
結帳 shop.com/cart購物網站手機版 m.shop.com (不是 RWD,是獨立網站)
後台 admin.shop.com (Vue)
分析使用者網站 analytics.shop.com (Angular)
Note. 雖然不同專案你可以選擇用不同前端框架,但若都用同一種會看到 monorepo 的更大好處。
shop.com 跟 shop.com/cart 雖然是在一個 domain 底下,但負責的卻是完全不同的團隊