Go 1.11 Module 介紹


title: "Go 1.11 Module"
date: 2018-10-26T23:50:56+08:00
draft: false
---git

Go 1.11 Module 介紹

go 1.11 發佈了一種新的模式來管理go程序的依賴庫,這種方式不一樣於vendor模型。github

它主要提供下面幾個重要特性:golang

  • 更方便的脫離GOPATH來工做(我理解是,逐漸淡化GOPATH,GOPATH一度給入門golang的新人留下不少坑)
  • 使用$GOPATH/pkg/mod來存儲go mod的緩存文件,提升go get速度
  • 可選的$GOPROXY和goproxy交互機制
    • 提供公司級或局域網級私有go mod服務器
    • golang.org/x/text等老大難第三方依賴庫提供緩存和提速

啓用 go mod

爲啓用go mod,須要配置GO111MODULE環境變量:緩存

  • GO111MODULE=off 無模塊支持,go 會從 $GOPATHvendor 文件夾尋找包。
  • GO111MODULE=on 模塊支持,go 會忽略 $GOPATHvendor 文件夾,只根據 go.mod 下載依賴。
  • GO111MODULE=auto$GOPATH/src 外面且根目錄有 go.mod 文件時,開啓模塊支持。

go mod 對其它命令的影響

  1. go get
    1. 若是強制啓用 go mod, go get如今支持針對版本號去get指定項目。
    2. go get必須在一個啓用了 go mod 的項目的根目錄去執行,這樣執行過go get,將會自動改下本目錄下的go.mod文件。
  2. go build
    1. go build 會先檢查當前目錄中go.mod記錄的依賴,並檢查$GOPATH/pkg/mod中的緩存,若是沒有,則會啓動go get流程。
    2. go build能夠強制提供一個參數go build -mod vendor來使用vendor模式,而不是go mod自身在gopath中緩存的文件。

使用GOPROXY

此處有一個開源版本的 goproxy.io服務器

和它的github主頁 github.com/goproxyioui

自建GOPROXY server

Athens is a Server for Your Go Packagescode

項目地址 https://github.com/gomods/athensserver

Athens能夠用來在公司內部創建本身的私有go mod服務器,
或者在公網創建一個對外公開的GOPROXY serverget

參考:it

相關文章
相關標籤/搜索