iT邦幫忙

2023 iThome 鐵人賽

DAY 2
0
Modern Web

由前向後,從前端邁向全端系列 第 2

2.【從前端到全端,Nextjs+Nestjs】使用Monorepo架構創建專案

  • 分享至 

  • xImage
  •  

文章重點

  • 什麼是 Monorepo,以及為什麼我們選擇使用它?
  • Monolith、Multi-Repo 與 Monorepo 的比較。
  • 使用 Nx 工具來創建一個基於 Monorepo 架構的專案。
  • 如何用指令將 Nx 專案運行起來。

本文

Monorepo 是什麼?為什麼使用它?

Monorepo是一種將多個相關但獨立的專案代碼存儲在同一個存儲庫中的策略。並且有以下的特點:

  1. 代碼共享容易: 在同一個repo中,能使不同專案間的代碼共享變得更加容易。
  2. 統一版本管理: 所有專案都會跟隨相同的版本,這使得版本控制更加簡單。
  3. 集中式維護: 當更新底層依賴時,只需要在一個地方進行更改即可,不用重複設定。

比較Monolith、Multi-Repo 與 Monorepo

在深入了解如何使用Monorepo之前,讓我們先來比較一下Monolith、Multi-Repo和Monorepo這三種不同的架構策略。

  • Monolith(單體架構): 所有的代碼(包括前端和後端)都存放在一個單一的代碼庫中。
    • 優點: 簡單,易於部署。
    • 缺點: 缺乏模組化,不易於多人協作和版本控制。
  • Multi-Repo(多倉庫): 每個project或module都有自己獨立的代碼庫。
    • 優點: 高度模組化,易於多人協作,並且能各自設定權限。
    • 缺點: 版本控制複雜,並且有各自獨立的設定,跨專案共享代碼更困難。
  • Monorepo(單一存儲庫): 將多個相關但獨立的專案代碼存儲在同一個存儲庫中。
    • 優點: 結合了 Monolith 和 Multi-Repo 的優點,易於代碼共享和版本控制。
    • 缺點: 需要複雜的設定和管理,並且有權限管理上的問題。

使用 Nx 創建 Monorepo 專案

我們這次會使用 monorepo 架構來創建我們的專案,並選擇使用Nx工具來實現這一目標。

首先,我們使用以下指令來創建一個新的 Nx 專案:

npx create-nx-workspace@latest --pm pnpm

執行這個指令後,您會看到一系列的設定選項。接著我們按照以下設定來完成專案的創建:
setting

創建完成後,專案的目錄結構應該會像這樣:
project architecture

接著,讓我們嘗試使用指令運行它,並將專案跑起來:

pnpm nx serve iron-ecommerce-next

打開http://localhost:4200/,我們能在瀏覽器中看到如下的介面顯示:
preview


總結及延伸

在本篇文章中,簡單的說明什麼是Monorepo。並且我們也使用 Nx 工具成功地創建了一個基於 Monorepo 的專案。在接下來的章節中,我們將深入探討如何使用這個專案架構來實現更複雜的功能。


上一篇
1.【從前端到全端,Nextjs+Nestjs】前言
下一篇
3.【從前端到全端,Nextjs+Nestjs】在Nx專案中設定格式化工具 (一)
系列文
由前向後,從前端邁向全端30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言