開發和釋出模組

你可以將相關的包收集到模組中,然後釋出這些模組供其他開發者使用。本主題概述了模組的開發和釋出。

為了支援模組的開發、釋出和使用,你需要使用

  • 一個工作流程,透過該工作流程,你開發和釋出模組,並隨著時間的推移用新版本進行修訂。請參閱開發和釋出模組的工作流程
  • 設計實踐,幫助模組使用者理解模組並以穩定的方式升級到新版本。請參閱設計和開發
  • 一個去中心化的釋出系統,用於釋出模組並檢索其程式碼。你將模組從自己的倉庫中提供給其他開發者使用,並以版本號釋出。請參閱去中心化釋出
  • 一個包搜尋引擎和文件瀏覽器(pkg.go.dev),開發者可以在其中找到你的模組。請參閱包發現
  • 一個模組版本號約定,用於向使用你的模組的開發者傳達穩定性和向後相容性的預期。請參閱版本控制
  • Go 工具,使其他開發者更容易管理依賴項,包括獲取模組源、升級等。請參閱管理依賴項

另請參閱

  • 如果你只是對使用他人開發的包感興趣,那麼這不是適合你的主題。相反,請參閱管理依賴項
  • 有關包含一些模組開發基礎知識的教程,請參閱教程:建立 Go 模組

開發和釋出模組的工作流程

當你希望將模組釋出給其他人時,你需要採用一些約定來簡化這些模組的使用。

以下高階步驟在模組釋出和版本控制工作流程中進行了更詳細的描述。

  1. 設計和編寫模組將包含的包。
  2. 使用確保透過 Go 工具向他人提供程式碼的約定,將程式碼提交到你的倉庫。
  3. 釋出模組,使其可被開發者發現。
  4. 隨著時間的推移,使用版本號約定修訂模組,該約定表示每個版本的穩定性和向後相容性。

設計和開發

如果模組中的函式和包形成一個連貫的整體,開發者會更容易找到和使用你的模組。在設計模組的公共 API 時,請儘量使其功能集中且獨立。

此外,在設計和開發模組時考慮向後相容性有助於其使用者升級,同時最大程度地減少對其自身程式碼的改動。你可以在程式碼中使用某些技術來避免釋出破壞向後相容性的版本。有關這些技術的更多資訊,請參閱 Go 部落格上的保持模組相容

在釋出模組之前,你可以使用 replace 指令在本地檔案系統上引用它。這使得在模組仍在開發中時,更容易編寫呼叫模組中函式的客戶端程式碼。有關更多資訊,請參閱模組釋出和版本控制工作流程中的“針對未釋出的模組進行編碼”。

去中心化釋出

在 Go 中,你透過在倉庫中標記模組程式碼來發布模組,使其可供其他開發者使用。你不需要將模組推送到中央服務,因為 Go 工具可以直接從你的倉庫(使用模組路徑定位,模組路徑是省略方案的 URL)或從代理伺服器下載你的模組。

在他們的程式碼中匯入你的包後,開發者使用 Go 工具(包括 go get 命令)下載你的模組程式碼進行編譯。為了支援這種模型,你遵循約定和最佳實踐,使 Go 工具(代表其他開發者)能夠從你的倉庫中檢索你的模組源。例如,Go 工具使用你指定的模組路徑,以及你用於標記模組以供釋出時使用的模組版本號,來定位和下載供其使用者使用的模組。

有關源和釋出約定以及最佳實踐的更多資訊,請參閱管理模組源

有關釋出模組的分步說明,請參閱釋出模組

包發現

在你釋出模組並且有人使用 Go 工具獲取它之後,它將在 Go 包發現網站pkg.go.dev上可見。在那裡,開發者可以搜尋該網站以找到它並閱讀其文件。

要開始使用模組,開發者匯入模組中的包,然後執行 go get 命令以下載其原始碼進行編譯。

有關開發者如何查詢和使用模組的更多資訊,請參閱管理依賴項

版本控制

隨著時間的推移,當你修訂和改進模組時,你分配版本號(基於語義版本控制模型),旨在表示每個版本的穩定性和向後相容性。這有助於使用你的模組的開發者確定模組何時穩定以及升級是否可能包含行為上的重大更改。你透過在倉庫中用版本號標記模組源來指示模組的版本號。

有關開發主要版本更新的更多資訊,請參閱開發主要版本更新

有關如何將語義版本控制模型用於 Go 模組的更多資訊,請參閱模組版本號