概要 golang 的包管理一直沒有官方統一的解決方案,因此也產生了很多非官方的包管理工具。 之前我一直使用的 gb() 能夠很好的隔開各個 golang 工程,當時 gb 創建的工程不太融入已有的 GOPATH 中。 gb 相當於是把工程的目錄作為 GOPATH,並且它的 vendor 目錄也和 ...
概要
golang 的包管理一直沒有官方統一的解決方案,因此也產生了很多非官方的包管理工具。 之前我一直使用的 gb(https://getgb.io/) 能夠很好的隔開各個 golang 工程,當時 gb 創建的工程不太融入已有的 GOPATH 中。 gb 相當於是把工程的目錄作為 GOPATH,並且它的 vendor 目錄也和 golang 自己的 vendor 不太一樣。
dep 的 Roadmap 中已經制定了成為 golang 官方包管理工具的計劃, 所以,使用 dep 來組織自己的 golang 項目以後能夠更好的和其他 golang 項目結合。
配置
golang 的配置
我的 golang 的配置主要分 3 塊:
- GOROOT: 用於存放 golang 本身,更新 golang 版本時,只要更新這個就行
- GOPATH: 用於存放 golang 的工具(gofmt,gocode 等等)
GOPROJECTS:用於存放各種 golang 項目
export GOROOT=/usr/local/go
export GOPROJECTS=/path/to/goprojects
export GOPATH=/path/to/gopath
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin:$GOPROJECTS/binexport GOPATH=$GOPATH:$GOPROJECTS
go project 的配置
在 $GOPROJECTS/src 下創建自己的 golang 項目
cd $GOPROJECTS/src
mkdir myGolangProject
cd myGolangProject
touch main.go
# write some golang code in main.go
dep init
dep ensure # add dependencies for main.go
go install # compile myGolangProject
myGolangProject 可以作為一個 git 倉庫提交到遠程的 git 倉庫,以便於和其他人分享
總結
其實很多 golang 的包管理工具都不錯,甚至不用包管理工具,通過合理的劃分 GOPATH 也可以達到 golang 項目管理的目的。 使用 dep,一方面是因為它以後很有可能會成為 golang 的官方包管理工具,另一方面也是為了更好的分享 golang 代碼, 畢竟通過 dep,別人可以一鍵安裝所有依賴,避免寫很多安裝說明的文檔。