Go 语言的包管理,微观吐槽

这是一篇踩完 Go dep 这个官方包管理器的坑以后的半吐槽文(人畜无害,看看就好 :))。node

一直以来,Go语言的『包管理器』这个问题,都没有获得有效地解决,当 pip 和npm 在天上飞行的时候,Go语言的包管理就像在地上爬行同样。程序员

你固然能够无脑 go get ,毕竟是内置的,钦定的。然而,一旦涉及到团队合做时,因为 go get 没法有效控制依赖包的『版本语义管理』,别人颇有可能没法100%搞成和你同样的环境。而后,某些诡异的Bug,就从这里产生了。那么怎么作才能保证 100 %可靠呢?直接将被依赖包的源代码也提交到 Git 里面, 让被依赖包也成为版本管理的一部分。好吧,这种蠢萌蠢萌的作法,既简单粗暴,还不会出错,我待过的一个团队就是这样作的(项目几乎不会升级被依赖包)。npm

然而,有不少人以为将第三方包的源码也提交到Git中,是一种很是 Stupid 的作法(壮士,你敢将 node_modules 下面的代码提交到贵司的Git中去吗)。因而,各类各样的『社区解决方案』就出现了,“百家争鸣”。好比,你走运的话,能够搜索到这样的文章标题:ide

  1. Why I Use Godep?
  2. Why Glide is Better than Godep?
  3. Migrate from godep

balabala...工具

“这么多的解决方案,可真是挑花了朕的眼睛呀。” 你感叹道。若是你由于某种契机,更换了几个主写Go的团队(多是不一样公司),那么可能这些包管理器你都要使用一次。“重在参与嘛,反正又不难,多学点知识老是最好的。” 大V级程序员这样教导你。学习

是啊,确实不难,费不了多少时间。但是,你抱怨的主题多是『马蛋,一个包管理器而已,至于整出这么多花样吗,难道不该该是语言自带,官方独裁维护的吗,难道不是 install uninstall 一把梭吗』。只是,大V级程序员没有听懂,觉得『这个年轻人浮躁,不肯意学习』。code

因而,Go dep出来了。附带还有几篇文章,说包管理是如何如何复杂的一件事情,dep 这个工具是如何如何地牛逼。若是你像我同样,是一个压根没有任何动力,去了解这件事情如何复杂如何牛逼的小白,奋力膜拜大佬,给大佬递茶,就完事了。只是呢,Go dep这个工具,尚未彻底进入官方的工具链中,并且使用方式有点怪怪的。ip

“没事的,大佬们必定会出一篇文章,分析为何这样是最牛逼的,Go语言不少特性都没有,你不也同样被洗成了脑残粉了吗? :)” 你这样想。(绝对没有黑得意思,我已经写了挺多Go代码了,就是 if err != nil 打得有点手疼 )。get

对于我这种只会npm install的人来讲,是绝对没有动力去了解 npm 这个工具的前因后果,先后关系的,可是Go 语言,也许就要花上一整大段时间,去Google清楚这中间七七八八的琐碎事。因此说,还真有点怀念 npm 呢。源码

“明明有这么多牛逼的大佬,明明是这么痛的痛点,怎么就没有人发现&吐槽,只有我这个小白才以为,这是一个『房间里的大象』吗?等等,是否是我智力不够能力不行啊?” 在一个累觉不爱的下午,你发出了感概。

“嗯,必定是个人问题。”

相关文章
相关标签/搜索