iT邦幫忙

2023 iThome 鐵人賽

DAY 24
0

NX 構成的 monorpeo 主要有兩種不同類型的結構,分別是 package-baed 跟 integrated ,這邊來簡介兩者的區別。

Package-based

專案中的每個 app 都有自己的 package.json 跟 nodemodules,用於定義各自的依賴,可以有共用的套件但用著不同的版本。因為依賴是區分的所以每個 app 的建置方式跟一般狀況的 app 差不多,然後可以利用 package.json 定義 NX 可以執行的操作。

好處是各個依賴不會互相干擾可以各自升級,壞處就是管理較複雜,新建的專案要自行設定套件依賴。

另外的好處是如果將既有的 app 納入到 monorepo 的管理時,不太需要額外設定。

Integrated

專案中的 app 沒有各自的 package.json ,而是只有根目錄的 package.json 跟 nodemodules 去定義所有 app 共通的依賴版本,各個 app 只有 project.json 用於定義 NX 的操作。

好處壞處都是依賴版本是唯一的,所以建立新的 app 的時候不用再另外定義依賴,但是當依賴升級時所有的 app 都要檢查是否能匹配並修改。

另外幾乎無法納入既有轉案,但是可以作為 package-based 的專案先混入。

另外除了 monorepo 外 NX 也可以作為獨立 app 的開發輔助,這種結構名稱叫做 standalone。

Standalone

只有一個位於根目錄的 app ,額外添加了 nx.json 用於定義 NX 的做操作,幫助序列執行任務跟任務結果暫存,其他就跟平常一樣。


上一篇
Next.js Client Component 偵測與記憶語系
下一篇
NX 加入 Astro 專案
系列文
組裝前端開發工具箱,從 NX 入手30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言