2024/11/03

NestJS 實現API版本控制

在現代API開發中,實現API版本控制是不可或缺的設計模式,特別是當應用逐步擴展且不斷迭代時,良好的版本管理至關重要。本文將介紹如何在NestJS中使用 VersioningType.URI 來實現API的版本控制,並深入分析兩種控制器的版本設定方式,幫助開發者根據實際需求選擇最佳方案。

Step 1: 設定全域前綴詞(setGlobalPrefix)

首先,設定全域前綴詞是必要的。務必先設定 setGlobalPrefix,再啟用版本控制,否則後續的版本控制將無法正確應用到API路徑。

// 設置全域的API前綴詞
const globalPrefix = 'api';
app.setGlobalPrefix(globalPrefix);

這行代碼會將所有API路徑統一設為/api開頭,例如/api/v1/test/echo。這樣可以讓API結構層次分明,並方便後續的維護和版本管理。

Step 2: 啟用版本控制(enableVersioning)

使用NX 體驗 Monorepo的美好

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

隨著軟體專案的成長,特別是在多模組、多應用程式的環境下,管理代碼的挑戰也隨之增加。傳統的 Multi-Repo 策略(每個模組使用獨立儲存庫)在版本一致性和依賴管理方面存在不少痛點,特別是當需要頻繁更新和協作時,容易引發衝突和整合困難。

Monorepo 是一種更集中的管理方式。透過將所有模組放在一個儲存庫中,開發團隊可以更容易地維持一致的依賴版本和共享代碼。這種方法在大型專案中具備幾個顯著優勢:

  • 依賴一致性:Monorepo 確保所有模組使用相同版本的依賴,避免因為版本衝突而引起的問題。
  • 跨模組重用和同步:允許模組之間共享代碼,並在單一提交中完成多個模組的變更,方便同步更新。
  • 統一的 CI/CD 管理:可以使用一套測試和構建流程來處理所有模組,簡化 CI/CD 配置。
  • 增量編譯和快取:通過增量構建和快取技術(如 NX 的增量編譯),Monorepo 能顯著減少重複編譯的時間,提高開發效率。

NX:專為 Monorepo 優化的開發工具

NX 是一個強大的 Monorepo 工具,專為管理多模組、多應用的專案而設計。它支援增量編譯、自動快取、依賴視覺化等功能,幫助開發團隊減少不必要的構建,提升整體開發效率。此外,NX 還具有任務調度、代碼生成和豐富的插件生態,適合大型團隊的專案開發需求。

此外,NX 可以與高效的包管理器 pnpm 搭配使用。pnpm 具備高度優化的快取和依賴管理能力,使得構建和測試更加高效。接下來,我們將介紹如何使用 NX 和 pnpm 建立並管理一個 Monorepo 專案,並說明其主要操作指令。

2024/10/10

Ubuntu 22.04 LTS GitLab EE 16.x Upgrade 17.x

# 編輯GitLab配置檔
sudo vim /etc/gitlab/gitlab.rb
# 找到下列的將其註解調 
# sidekiq['min_concurrency']
# sidekiq['max_concurrency']
# 改加入
# sidekiq['concurrency'] = 併發數量

# 重新載入配置
sudo gitlab-ctl reconfigure

# 更新GitLab EE版本
sudo apt-get install --only-upgrade gitlab-ee=17.3.1-ee.0 -y

2024/09/18

透過Eeupdate修改Intel Mac Address

  1. 先透過Rufus燒錄一隻MS-DOS的USB
  2. 接著下載Eeupdate將其解壓縮出來後放在剛燒錄好的usb內
  3. 將USB放入要修改的電腦上,進入BIOS確保能讀取到非UEFI開機磁區,並透過該磁區開機
  4. 開機後輸入以下命令
cd EE
# 先執行看是否有讀取到Intel網路卡
Eeupdate
# 有的話在執行下列指令,舉例:要改為00:11:22:33:44:55
EEUPDATE -NIC=1 -MAC=001122334455

修改完重開機即可生效