vendorvendor 特性
GO15VENDOREXPERIMENT=1go buildgo run- 当前包下的 vendor 目录
- 向上级目录查找,直到找到 src 下的 vendor 目录
- 在 GOROOT 目录下查找
- 在 GOPATH 下面查找依赖包
go envvendorvendor 使用建议
mainpackagevendormainpackagevendorgovendor 简介
vendor$GOPATHvendorvendor/vendor.jsonComposergovendor add/update$GOPATHvendor/*/govendor syncgovendor fetchgovendor migratevendorgovendorgovendor 使用
要求:
$GOPATH/srcset GO15VENDOREXPERIMENT=1安装
go get -u github.com/kardianos/govendorgovendor$GOPATH/binexport PATH="$GOPATH/bin:$PATH"初始化
vendorgovendor initvendorvendor.jsonvendor.json{
"comment": "",
"ignore": "test",
"package": [],
"rootPath": "govendor-example"
}常用命令
$GOPATHvendorgovendor add +external$GOPATHgovendor add gopkg.in/yaml.v2- 列出代码中所有被引用到的包及其状态
govendor list
e github.com/gin-contrib/sse
e github.com/gin-gonic/gin
e github.com/gin-gonic/gin/binding
e github.com/gin-gonic/gin/internal/json
e github.com/gin-gonic/gin/render
e github.com/golang/protobuf/proto
e github.com/mattn/go-isatty
e github.com/ugorji/go/codec
e gopkg.in/go-playground/validator.v8
e gopkg.in/yaml.v2
pl govendor-example
m github.com/json-iterator/go
m golang.org/x/sys/unix- 列出一个包被哪些包引用
govendor list -v fmt
s fmt
├── e github.com/gin-contrib/sse
├── e github.com/gin-gonic/gin
├── e github.com/gin-gonic/gin/render
├── e github.com/golang/protobuf/proto
├── e github.com/ugorji/go/codec
├── e gopkg.in/go-playground/validator.v8
├── e gopkg.in/yaml.v2
└── pl govendor-example$GOPATHgovendor fetch golang.org/x/net/context- 安装指定版本的包
govendor fetch golang.org/x/net/context@a4bbce9fcae005b22ae5443f6af064d80a6f5a55
govendor fetch golang.org/x/net/context@v1 # Get latest v1.*.* tag or branch.
govendor fetch golang.org/x/net/context@=v1 # Get the tag or branch named "v1".vendorgovendor fmt +local- 只构建编译项目内部的包
govendor install +local- 只测试项目内部的测试案例
govendor test +localvendorgovendor install +vendor,^programvendor$GOPATHgovendor fetch +outvendor$GOPATHgovendor update +vendor$GOPATHvendorgovendor update -uncommitted <updated-package-import-path>- Fork 了某个包,但尚未合并,该如何引用到最新的代码包
govendor fetch github.com/normal/pkg::github.com/myfork/pkgmyforknormalvendor.jsongovendor syncgovendor 子命令
govendor COMMAND -hgithub.com/kardianos/govendor/contextvendorvendor.json$GOPATHvendor$GOPATHvendorvendorvendor$GOPATHvendor.jsonvendorvendorgo get$GOPATHvendorgovendorgovendor 状态参数
GOPATHvendorvendorvendor+external +missinglistaddupdateremovefetchGo modules
普大喜奔的是,从 Go 1.11 版本开始,官方已内置了更为强大的 Go modules 来一统多年来 Go 包依赖管理混乱的局面(Go 官方之前推出的 dep 工具也几乎胎死腹中),并且将在 1.12 版本中正式默认开启。
目前已受到社区的看好和强烈推荐,建议新项目采用 Go modules。