將 dep 更換為 go mod
起因
之前一直在使用 dep 來管理專案, 最近碰到了兩個噁心的事情, 就是安裝 ali-oss-sdk 和
go-ethereum 客戶端的時候超級慢,lantern 也是半廢狀態, 時斷時連,go-ethereum
等了半個小時都沒裝上(開燈和關燈都試了), 最後 dep ensure
狀態回家, 第二天上班才好。
正好在我的帖子中 @appleboy 給我留言說 [可以改用 go module 了] , 然後就試了下, 淚奔, 只能說太好用了。
結果就是我就將所有的專案全部用 module 替換了。
替換
這裡記錄下過程, 用我的部落格來做示例。
這個 go mod
是 go 自帶的, 替換起來非常簡單, 正好我的 go 環境使用的是最 go1.12 , 配置起來很容易。
將原本的 dep 的配置刪除
# 我已經將程式碼從 GOPATH 中改到 /www 目錄了, 現在可以脫離 GOPATH 了,
# 程式碼也可以放在任意目錄了。
# 如果程式碼還在 GOPATH 下, 就需要手動新增下面配置, 不叫 Go 去自動識別
# export GO111MODULE=on
cd /www/mdblog
# 刪除原本的 dep 的配置, 這個我也不糾結了, 原本 dep 對版本的控制就不太好
# 如果對使用的包版本有要求, 稍後可以手動修改 go.mod 將版本改為指定的
rm -rf Gopkg.* vendor
配置 go mod
這個也非常簡單,它初始化後會在 $GOPATH/pkg/mod
目錄中將所有下載過的依賴包儲存, 並且可以儲存多個版本, 下次再使用已經下載過的版本依賴時, 不會再去網上下載, 應該算是個本地倉庫的感覺吧。
# 初始化
go mod init
# 如果是一個新的專案, 初始化的時候需要指定專案名稱, 如下面兩個例子
# go mod init demoname
# go mod init github.com/astaxie/mdblog
現在就會在專案目錄下生成一個 go.mod
檔案, 並且當在當前專案目錄下執行 go get
,
go build
, go run
等命令的時候, 自動將依賴的包下載,同時將版本資訊寫入到
go.mod
中,還會生成一個新的 go.sum
詳細的記錄
就這麼簡單的將專案從 dep 轉成 module 管理。
代理
換成 module 方式之後可以很方便的來使用代理了,例如可以使用 https://goproxy.io/ 代理, 裡面有配置的說明。因為對於有一些https://golang.org/x/... 專案沒辦法下載,所以 proxy 就至關重要了,而且用了 proxy 下載速度搜搜的
Linux 下新增下面變數就可以生效
# Enable the go modules feature
export GO111MODULE=on
# Set the GOPROXY environment variable
export GOPROXY=https://goproxy.io,direct
這裡有個坑, 如果使用了私有倉庫, 這個代理是找不到的, 所以必須配置上第二個引數 direct
- 加微信實戰群請加微信(註明:實戰群):gocnio
相關文章
- go mod 使用Go
- go mod: 配置代理Go
- 指定go mod 版本Go
- Golang引入泛型:Go將Interface{}替換為“Any”Golang泛型
- 理解 go mod init 命令Go
- go.mod版本管理Go
- 如何在 Go 中將 []byte 轉換為 io.Reader?Go
- Go 包管理歷史以及 Go mod 使用Go
- Go mod 使用遇到的問題Go
- go mod init報錯問題Go
- Go mod 相容性問題Go
- go mod graph 視覺化——gmchartGo視覺化
- 將Centos的yum源更換為國內的阿里雲(163)源CentOS阿里
- Go 包管理工具 dep 安裝與使用Go
- 這一次,徹底掌握go modGo
- go mod 的使用及解答學習以來的疑惑(go mod 目錄、包名、import之間的關係)GoImport
- 將json資料轉換為Python字典將json資料轉換為Python字典JSONPython
- Golang 基礎值速學之二十(go mod)Golang
- 為什麼 Go 不支援 []T 轉換為 []interfaceGo
- centos7 更換為aliyun的yum源CentOS
- 使用 Go Mod 進行包管理並代理拉包Go
- 第 27 期 go mod 原始碼閱讀 part 2Go原始碼
- golang中go mod使用第三方包Golang
- go用unioffice轉換word文件為pdfGo
- Go官方依賴包管理工具dep的安裝及使用Go
- Go 更強的程式碼潔癖,可以把 gofmt 給換了!Go
- js將秒轉換為時分秒JS
- JavaScript將陣列轉換為字串JavaScript陣列字串
- Java 中將 InputStream 轉換為 StreamJava
- Java 中將 Short 轉換為 byte[]Java
- Thymeleaf將字串轉換為數字字串
- 將WordPress站點轉換為JoomlaOOM
- CoBank:移除和更換美國市場華為電信裝置成本將超10億美元
- 為什麼Discord從Go切換到Rust?GoRust
- DEP緩解技術
- Debian更換源
- Python將xml格式轉換為json格式PythonXMLJSON
- flink將bathch dataset 轉換為sql操作BATSQL