go module包管理學習筆記


go module倉庫代理(阿里雲):GOPROXY=https://mirrors.aliyun.com/goproxy/

1.設置模塊支持

go 1.11 有了對模塊的實驗性支持,大部分的子命令都知道如何處理一個模塊,比如 run build install get list mod 子命令,第三方工具可能會支持的晚一些。到 go 1.12 會刪除對 GOPATH 的支持,go get 命令也會變成只能獲取模塊,不能像現在這樣直接獲取一個裸包。

可以用環境變量 GO111MODULE 開啟或關閉模塊支持,它有三個可選值:offonauto,默認值是 auto

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

在使用模塊的時候,GOPATH 是無意義的,不過它還是會把下載的依賴儲存在 $GOPATH/pkg/mod 中,也會把 go install 的結果放在 $GOPATH/bin 中。

 

2.初始化模塊

go mod init [module name]

我們運行下 go mod init test命令試試,目錄下生成了一個go.mod的文件,內容如下:

module test

go 1.12

比如我要安裝beego框架,運行下命令:go get github.com/astaxie/beego
文件內容發生了變化:

module test

go 1.12

require (
    github.com/astaxie/beego v1.12.0 // indirect
    github.com/shiena/ansicolor v0.0.0-20151119151921-a422bbe96644 // indirect
)

說明go get對文件產生了影響,把安裝的包引入到了go.mod文件里。

其他命令說明:

go mod download :安裝mod的模塊到本地緩存
go mod vendor:vendor版本的解決方案,將依賴復制到vendor下面。

go mod tidy:移除未用的模塊,以及添加缺失的模塊。

go mod verify:驗證所有模塊是否正確。

 

以前都是下到$GOPATH/src下再引用模塊,感覺有點OUT啊,這種方法好多了...


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM