# MiniGameRepository ## Monorepo ### 差異 ![](https://i.imgur.com/RRaRTmq.png) - Monolith - Multi-repo - Monorepo ### 優點 - 共用配置(tsconfig/prettier/lint/env) - 佈署快速(node_module共用/平行佈署) - 快速知道鄰居的異動,co-work容易 - 程式共用量增加 ### 缺點 - codebase巨大 - [git效能緩慢](https://github.blog/2022-06-29-improve-git-monorepo-performance-with-a-file-system-monitor/) - 權限管理 ### Tips - 不是每個大型專案適用 - 前後端有時可以整合 - 選擇性佈署 / 同時全部佈署 ### 佈署 在monorepo中,通常有幾種方法來選擇性地佈署某個應用程序: 打tag:如前所述,您可以在monorepo中的某個應用程序上打一個tag,並在 .gitlab-ci.yml 文件中檢查該tag,以決定是否要佈署該應用程序。 分支:您可以將每個應用程序放在一個獨立的分支中,並對每個分支定義獨立的CI / CD流程。當要佈署特定應用程序時,您只需要推送代碼到該應用程序的分支即可。 檔案:您可以在monorepo中定義一個檔案,其中包含要佈署的應用程序的列表,並在 .gitlab-ci.yml 文件中檢查該檔案,以決定是否要佈署特定應用程序。 在更新了全部應用程序共用的libs時,您可以根據需要選擇性地佈署所有應用程序,或者選擇只佈署特定的一些應用程序。這將取決於您的CI / CD流程是如何定義的,以及您希望在更新時如何進行佈署。 (feat OpenAI) ### 工具 - [NX](https://nx.dev/) - [TurboRepo](https://turbo.build/) ### NX - 工作區管理:管理多個模組,並可以確保每個模組之間的相互依賴關係。 - 建置和測試:統一的工具鏈,可以自動地建置和測試您的應用程式。(ex: (nx test [projectName] --coverage)) - 適用性檢查:通過檢查code依賴關係,確保應用程式在不同環境中仍然有效。(nx dep-graph) 協作:NX.dev支援多人協作,可以確保多人在同一個項目中工作時不會相互干擾。 ### NX start npx create-nx-workspace@latest // helloworld npx nx serve helloworld npx nx g @nrwl/react:library cart npx nx graph ### Example ReactNative+Next.js https://solito.dev/ https://github.com/nandorojo/solito/tree/master/example-monorepos/blank ReactModuleFederation https://github.com/nrwl/react-module-federation --- ## 其它 ### Solid.js - [官網](https://www.solidjs.com/) - [Banchmark](https://krausest.github.io/js-framework-benchmark/current.html) ### Next.js - [官網](https://nextjs.org/) ### CSS (Tailwind) - [官網](https://tailwindcss.com/docs/installation) ### 測試工具 - [Cypress](https://www.cypress.io/) ### Flutter - [Flutter](https://flutter.dev/) - [狀態管理GetX](https://pub.dev/packages/get)