如果沒有合適的資源可供參考,開始使用 Go 中的私有模組可能會成為一項艱鉅的任務。這是因為 Go 模組不是從中央儲存庫儲存或提供的,但可以從不同的儲存庫中提取它們;一個例子是 Github。
將公用 Go 套件匯入到您的專案就像執行單一命令一樣簡單:
$ 去取得 github.com/author/module-name
另一方面,在 Go 中設定和使用私有模組將需要更多步驟。使用私有模組,您可以在您選擇的儲存庫中託管私有套件並使用它,而不必使程式碼公開存取。
要設定私有模組,先建立一個目錄並導航到該目錄。透過執行以下命令初始化模組:
$ go mod init github.com/author/module-name
下一步是提交,為提交添加一個標籤,這有助於對模組進行版本控制,並將模組推送到儲存庫,在本例中為 Github。
在此範例中,模組是專案的根,但在某些情況下,另一個 go 模組是根,並且您可以擁有子模組。對於子模組,上面的命令將轉換為以下內容:
$ go mod init github.com/author/root-module/module-name
取得私有儲存庫
該模組現在託管在儲存庫中,但它是私有的,因此需要進行身份驗證才能在專案中提取和使用它。專案可以透過使用本機環境變數進行身份驗證、透過 Github 操作或 dockerfile 來存取模組。
在本文中,我們將重點放在如何在利用本地環境變數的同時存取私有儲存庫。這可以透過以下兩個選項來實現。
在這兩個選項中,都需要設定 GOPRIVATE 環境變數。 GOPRIVATE 環境變數幫助 Go 指令決定正在取得的模組是公共的還是私有的。它包含根據儲存庫包名稱檢查的模式,並且任何與此變數相符的套件名稱都不會透過公共 Go 快取伺服器取得。
透過在模組目錄中執行以下命令來設定並匯出 GOPRIVATE 環境變數。
$ export GOPRIVATE=github.com/author/module-name
或者,您可以使用 Go env 指令設定 GOPRIVATE 變量,如下所示:
$ go env -w GOPRIVATE=github.com/author/module-name $ go env GOPRIVATE
*將 git 配置為透過 SSH 而非 HTTP(S) 取得
*
Go get 指令使用 http 或 https 從 git 取得模組。為了確保它使用 ssh 來拉取模組,您可以透過編輯 git 設定檔或使用以下命令來實現:
$ go env -w GOPRIVATE=github.com/author/module-name $ go env GOPRIVATE
*使用個人存取權令牌配置 Go
*
設定 GOPRIVATE 變數後,此選項需要您設定並匯出另外兩個變數。
GITHUB_ACCESS_TOKEN 變數設定為個人存取權令牌,您可以從 Github 設定中建立:個人存取權杖。確保為令牌命名並在範圍部分選擇儲存庫。
要設定和匯出的另一個變數是設定為 localhost 的 GONOPROXY 變數,突出顯示該 url 不應與校驗和資料庫進行比較。
$ git config --global url."git@github.com:author/module-name".insteadOf "https://github.com/author/module-name"
最後,更新全域 git 配置以使用產生的個人令牌。
$ export GONOPROXY=localhost $ export GITHUB_ACCESS_TOKEN=<your-token>
完成這些配置後,您現在應該能夠使用上述任一選項來取得私有模組並在專案中使用它。若要取得模組,請執行 go run 。用於建置專案的命令,該專案會在新增專案依賴項之一時依序拉取模組,或執行指定模組 github 路徑的 go get 命令。
以上是在 Go 中設定和使用私有模組的詳細內容。更多資訊請關注PHP中文網其他相關文章!