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

網(wǎng)上寫govendor的博文不少惦蚊,但從安裝到介紹器虾,總看上去有些沉重,下面奉上一篇簡(jiǎn)單的教程蹦锋,3分鐘入門兆沙。

第1部分 簡(jiǎn)明教程

2步走,3分鐘輕松搞定Go項(xiàng)目的依賴莉掂。

第1步 安裝

go get -u github.com/kardianos/govendor

第2步 為項(xiàng)目增加依賴

  1. 進(jìn)入到項(xiàng)目目錄
  2. 使用govendor init命令初始化項(xiàng)目的依賴
  3. 運(yùn)行govendor fetch命令增加依賴
  4. 打開./vendor/vendor.json查看依賴的包

步驟:

cd path/to/project
govendor init
govendor fetch project_url_with_out_http
cat vendor/vendor.json

舉個(gè)例子:項(xiàng)目awesome依賴github.com/go-clang/bootstrap葛圃,過(guò)程是這樣的:

cd awesome
govendor init
govendor fetch github.com/go-clang/bootstrap
cat vendor/vendor.json

第2部分 授之以漁

第1個(gè) 遇到govendor問(wèn)題

govendor當(dāng)然還有其他豐富功能,比如:

  1. 依賴的包更新了憎妙,怎么更新依賴库正?
  2. 不依賴這個(gè)包, 怎么移除尚氛?
  3. 怎么快速查看已經(jīng)依賴的包诀诊?
  4. 怎么知道哪些包過(guò)期了,或者丟失了阅嘶?

你可能想到時(shí)候遇到再百度或者Google一下属瓣,看看別人的博客或教程,這種方法太弱了讯柔,浪費(fèi)自己的時(shí)間抡蛙,不能專心工作

正確的姿勢(shì)

  1. 使用govendor --help列出各種命令魂迄。
  2. 使用Ctrl+F開啟終端搜索粗截,尋找要使用的命令。

比如:

  1. 增加包捣炬,搜a(bǔ)dd熊昌,會(huì)得到add和fetch這2個(gè)命令绽榛。
  2. 更新包,搜update婿屹,會(huì)得到update和fetch這2個(gè)命令灭美。
  3. 刪除包,搜remove昂利,得到remove這個(gè)命令届腐。
  4. 查看已經(jīng)依賴的包,搜list蜂奸,得到list犁苏、status、license命令扩所,而符合你的是list围详,并且知道了status能列出過(guò)期的包。
?  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個(gè) govendor做了啥

govendor“安裝”軟件包的時(shí)候做了啥呢祖屏?其實(shí)就是把依賴的包下載到project_dir/vendor目錄短曾,這個(gè)目錄結(jié)構(gòu)和$GOPATH/src下的相同,但如果下載一些比較大的會(huì)發(fā)現(xiàn)赐劣,govendor并不會(huì)下載依賴包的所有文件嫉拐,而是上層的部分文件。想深入了解govendor魁兼?入門后再研究吧婉徘。

?  awesome git:(master) ? tree .
.
├── awesome
├── hi.go
└── vendor
    ├── github.com
    │   └── go-clang
    │       └── bootstrap
    │           ├── AUTHORS
    │           ├── CONTRIBUTORS
    │           ├── LICENSE
    │           ├── Makefile
    │           └── README.md
    └── vendor.json

如果這篇文章對(duì)你有幫助,請(qǐng)點(diǎn)個(gè)贊/喜歡咐汞,讓我知道我的寫作是有價(jià)值的盖呼,感謝。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末化撕,一起剝皮案震驚了整個(gè)濱河市几晤,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌植阴,老刑警劉巖蟹瘾,帶你破解...
    沈念sama閱讀 217,277評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異掠手,居然都是意外死亡憾朴,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門喷鸽,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)众雷,“玉大人,你說(shuō)我怎么就攤上這事±。” “怎么了鸡岗?”我有些...
    開封第一講書人閱讀 163,624評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)编兄。 經(jīng)常有香客問(wèn)我纤房,道長(zhǎng),這世上最難降的妖魔是什么翻诉? 我笑而不...
    開封第一講書人閱讀 58,356評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮捌刮,結(jié)果婚禮上碰煌,老公的妹妹穿的比我還像新娘。我一直安慰自己绅作,他們只是感情好芦圾,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,402評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著俄认,像睡著了一般个少。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上眯杏,一...
    開封第一講書人閱讀 51,292評(píng)論 1 301
  • 那天夜焦,我揣著相機(jī)與錄音,去河邊找鬼岂贩。 笑死茫经,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的萎津。 我是一名探鬼主播卸伞,決...
    沈念sama閱讀 40,135評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼锉屈!你這毒婦竟也來(lái)了荤傲?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,992評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤颈渊,失蹤者是張志新(化名)和其女友劉穎遂黍,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體俊嗽,經(jīng)...
    沈念sama閱讀 45,429評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡妓湘,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,636評(píng)論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了乌询。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片榜贴。...
    茶點(diǎn)故事閱讀 39,785評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出唬党,到底是詐尸還是另有隱情鹃共,我是刑警寧澤,帶...
    沈念sama閱讀 35,492評(píng)論 5 345
  • 正文 年R本政府宣布驶拱,位于F島的核電站霜浴,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏蓝纲。R本人自食惡果不足惜阴孟,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,092評(píng)論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望税迷。 院中可真熱鬧永丝,春花似錦、人聲如沸箭养。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)毕泌。三九已至喝检,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間撼泛,已是汗流浹背挠说。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留愿题,地道東北人纺涤。 一個(gè)月前我還...
    沈念sama閱讀 47,891評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像抠忘,于是被迫代替她去往敵國(guó)和親撩炊。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,713評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,102評(píng)論 25 707
  • 1崎脉、通過(guò)CocoaPods安裝項(xiàng)目名稱項(xiàng)目信息 AFNetworking網(wǎng)絡(luò)請(qǐng)求組件 FMDB本地?cái)?shù)據(jù)庫(kù)組件 SD...
    陽(yáng)明先生_X自主閱讀 15,980評(píng)論 3 119
  • 主動(dòng)的生活拧咳,我希望能搶在前面,主動(dòng)的生活
    B9班的真高興閱讀 219評(píng)論 0 0
  • 今天早上九點(diǎn)五十六分囚灼,可愛的小公主就來(lái)到我們家骆膝,成為我們家中的一員,她體重五斤九兩二灶体,身高五十厘米阅签,皮膚白...
    a阿倫lun閱讀 520評(píng)論 3 5