Go依賴包管理工具,3分鐘掌握govendor

網上寫govendor的博文很多,但從安裝到介紹,總看上去有些沉重,下面奉上一篇簡單的教程,3分鐘入門。git

第1部分 簡明教程

2步走,3分鐘輕鬆搞定Go項目的依賴。github

第1步 安裝

go get -u github.com/kardianos/govendor

第2步 爲項目增長依賴

  1. 進入到項目目錄
  2. 使用govendor init命令初始化項目的依賴
  3. 運行govendor fetch命令增長依賴
  4. 打開./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

第2部分 授之以漁

第1個 遇到govendor問題

govendor固然還有其餘豐富功能,好比:bootstrap

  1. 依賴的包更新了,怎麼更新依賴?
  2. 不依賴這個包, 怎麼移除?
  3. 怎麼快速查看已經依賴的包?
  4. 怎麼知道哪些包過時了,或者丟失了?

你可能想到時候遇到再百度或者Google一下,看看別人的博客或教程,這種方法太弱了,浪費本身的時間,不能專心工做bash

正確的姿式app

  1. 使用govendor --help列出各類命令。
  2. 使用Ctrl+F開啓終端搜索,尋找要使用的命令。

好比:ide

  1. 增長包,搜add,會獲得add和fetch這2個命令。
  2. 更新包,搜update,會獲得update和fetch這2個命令。
  3. 刪除包,搜remove,獲得remove這個命令。
  4. 查看已經依賴的包,搜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
    <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.

第2個 govendor作了啥

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
若是這篇文章對你有幫助,請點個贊/喜歡,讓我知道個人寫做是有價值的,感謝。
相關文章
相關標籤/搜索