go 依賴管理 govendor

第1部分 簡明教程 2步走,3分鐘輕鬆搞定Go項目的依賴。 第1步 安裝 go get -u github.com/kardianos/govendor 第2步 爲項目增加依賴 進入到項目目錄 使用govendor init命令初始化項目的依賴 運行govendor fetch命令增加依賴 打開./vendor/vendor.json查看依賴的包 步驟: cd path/to/project govendor init govendor fetch project_url_with_out_http cat vendor/vendor.json 舉個例子:項目awesome依賴github.com/go-clang/bootstrap,過程是這樣的: cd awesome govendor init govendor fetch github.com/go-clang/bootstrap cat vendor/vendor.json 第2部分 授之以漁 第1個 遇到govendor問題 govendor當然還有其他豐富功能,比如: 依賴的包更新了,怎麼更新依賴? 不依賴這個包, 怎麼移除? 怎麼快速查看已經依賴的包? 怎麼知道哪些包過期了,或者丟失了? 你可能想到時候遇到再百度或者Google一下,看看別人的博客或教程,這種方法太弱了,浪費自己的時間,不能專心工作。 正確的姿勢: 使用govendor --help列出各種命令。 使用Ctrl+F開啓終端搜索,尋找要使用的命令。 比如: 增加包,搜add,會得到add和fetch這2個命令。 更新包,搜update,會得到update和fetch這2個命令。 刪除包,搜remove,得到remove這個命令。 查看已經依賴的包,搜list,得到list、status、license命令,而符合你的是list,並且知道了status能列出過期的包。 ➜ 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 [::][{/...|/^}][@[]] 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. 第2個 govendor做了啥 govendor“安裝”軟件包的時候做了啥呢?其實就是把依賴的包下載到project_dir/vendor目錄,這個目錄結構和$GOPATH/src下的相同,但如果下載一些比較大的會發現,govendor並不會下載依賴包的所有文件,而是上層的部分文件。想深入瞭解govendor?入門後再研究吧。 ➜ awesome git:(master) ✗ tree . . ├── awesome ├── hi.go └── vendor ├── github.com │ └── go-clang │ └── bootstrap │ ├── AUTHORS │ ├── CONTRIBUTORS │ ├── LICENSE │ ├── Makefile │ └── README.md └── vendor.json 作者:大彬_一起學Golang 鏈接:https://www.jianshu.com/p/aa5ebbd61754 來源:簡書 著作權歸作者所有。商業轉載請聯繫作者獲得授權,非商業轉載請註明出處。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章