网上写govendor的博文很多,但从安装到介绍,总看上去有些沉重,下面奉上一篇简单的教程,3分钟入门。git
2步走,3分钟轻松搞定Go项目的依赖。github
go get -u github.com/kardianos/govendor
govendor init
命令初始化项目的依赖govendor fetch
命令增长依赖./vendor/vendor.json
查看依赖的包步骤:shell
cd path/to/project govendor init govendor fetch project_url_with_out_http cat vendor/vendor.json
举个例子:项目awesome依赖github.com/go-clang/bootstrap
,过程是这样的:json
cd awesome govendor init govendor fetch github.com/go-clang/bootstrap cat vendor/vendor.json
govendor固然还有其余丰富功能,好比:bootstrap
你可能想到时候遇到再百度或者Google一下,看看别人的博客或教程,这种方法太弱了,浪费本身的时间,不能专心工做。bash
正确的姿式:app
govendor --help
列出各类命令。好比:ide
➜ project_name git:(develop) govendor --help govendor (v1.0.9): record dependencies and copy into vendor folder -govendor-licenses Show govendor's licenses. -version Show govendor version -cpuprofile 'file' Writes a CPU profile to 'file' for debugging. -memprofile 'file' Writes a heap profile to 'file' for debugging. Sub-Commands init Create the "vendor" folder and the "vendor.json" file. list List and filter existing dependencies and packages. add Add packages from $GOPATH. update Update packages from $GOPATH. remove Remove packages from the vendor folder. status Lists any packages missing, out-of-date, or modified locally. fetch Add new or update vendor folder packages from remote repository. sync Pull packages into vendor folder from remote repository with revisions from vendor.json file. migrate Move packages from a legacy tool to the vendor folder with metadata. get Like "go get" but copies dependencies into a "vendor" folder. license List discovered licenses for the given status or import paths. shell Run a "shell" to make multiple sub-commands more efficient for large projects. go tool commands that are wrapped: "+status" package selection may be used with them fmt, build, install, clean, test, vet, generate, tool Status Types +local (l) packages in your project +external (e) referenced packages in GOPATH but not in current project +vendor (v) packages in the vendor folder +std (s) packages in the standard library +excluded (x) external packages explicitly excluded from vendoring +unused (u) packages in the vendor folder, but unused +missing (m) referenced packages but not found +program (p) package is a main package +outside +external +missing +all +all packages Status can be referenced by their initial letters. Package specifier <path>[::<origin>][{/...|/^}][@[<version-spec>]] Ignoring files with build tags, or excluding packages from being vendored: The "vendor.json" file contains a string field named "ignore". It may contain a space separated list of build tags to ignore when listing and copying files. This list may also contain package prefixes (containing a "/", possibly as last character) to exclude when copying files in the vendor folder. If "foo/" appears in this field, then package "foo" and all its sub-packages ("foo/bar", …) will be excluded (but package "bar/foo" will not). By default the init command adds the "test" tag to the ignore list. If using go1.5, ensure GO15VENDOREXPERIMENT=1 is set.
govendor“安装”软件包的时候作了啥呢?其实就是把依赖的包下载到project_dir/vendor
目录,这个目录结构和$GOPATH/src
下的相同,但若是下载一些比较大的会发现,govendor并不会下载依赖包的全部文件,而是上层的部分文件。想深刻了解govendor?入门后再研究吧。fetch
➜ awesome git:(master) ✗ tree . . ├── awesome ├── hi.go └── vendor ├── github.com │ └── go-clang │ └── bootstrap │ ├── AUTHORS │ ├── CONTRIBUTORS │ ├── LICENSE │ ├── Makefile │ └── README.md └── vendor.json
若是这篇文章对你有帮助,请点个赞/喜欢,让我知道个人写做是有价值的,感谢。