iT邦幫忙

2023 iThome 鐵人賽

DAY 13
0
自我挑戰組

30天打造自己的RSS閱讀器:Go語言與DevOps的實戰應用系列 第 13

Day 13:談談 Go 的套件管理:從 GOPATH 到 go mod

  • 分享至 

  • xImage
  •  

上次談到用 Go 建立 web API server之後,發現我忘記提到 Go 的套件管理方式。那今天就來稍微說一下 Go 語言的套件管理的演進。

GOPATH 時代

大概 10 年前我剛接觸 Go 時 (2014 年),設定 GOPATH 環境變數是 Go 開發者用來管理套件和工程的必經之路。所有的 Go 套件和專案都規定要放在 GOPATH 目錄下的特定結構中。

這個方法有幾個缺點:

  • 很容易與系統的其他 Go 套件和應用產生衝突,OS 裡面所有的 Go 套件全部擠在一起。
  • 需要手動管理所有依賴和版本。
  • 安裝 Go 環境很麻煩 (在 Windows 環境時,我覺得這跟裝完 JDK 後要設定 JAVA_HOME 差不多麻煩)

第三方套件管理器

為了解決 GOPATH 帶來的問題,許多第三方的套件管理器如 glide、dep 等應運而生。

這些工具提供了更多功能,例如:

  • 能夠鎖定依賴的特定版本 (不要總想著用最新版本,當你維護大型專案的時候你會發現鎖定特定版本可以讓你準時下班回家)
  • 自動下載和管理依賴

然而,這些工具都不是官方支持的,所以有時候會遇到相容性問題。

Go Module 橫空出世

終於 Go 1.11 版本中,Go Module 成為了官方推薦的依賴管理工具。使用 go mod 指令,開發者能夠非常容易地管理他們的 Go 專案和依賴。

go mod init
go mod tidy
go mod download

這些指令大大簡化了依賴管理過程:

  • 不再需要 GOPATH
  • 可以很容易地管理多版本的依賴
  • 支持語意版本(Semantic Versioning)

在 Day 11 中,我用 go mod init 初始化專案,這指令會產生一個 go.mod 檔案,用來追蹤專案依賴的套件,使用 npm、nuget、poetry 一樣效果。

如果想 add 新的依賴,只需在程式碼中 import 新套件,然後執行 go mod tidy (在 VSCode 中只要存檔即可觸發),這個指令會自動更新 go.modgo.sum 檔案。

結語

go mod 是 Go 語言中一個非常強大的工具,它不僅簡化了依賴管理,也使多人協作變得更加容易。從 GOPATH 到現在的 go mod,我們可以看出 Go 社群一直在進步,讓開發者有更好的工具和環境。


上一篇
Day 12:單元測試 in Go
下一篇
Day 14:開始用 GitHub Actions 實現持續整合(CI)流程,好潮喔
系列文
30天打造自己的RSS閱讀器:Go語言與DevOps的實戰應用30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言