问: 开源go项目时,是否应该忽略vendor目录?

原由是发现有的开源项目,推送Gopkg.lockGopkg.toml(如用dep来作为依赖的管理)的同时,也推送vendor/整个目录下的代码?

个人觉得没有必要,目前忽略了整个vendor/目录。
项目地址:https://github.com/qclaogui/goforum
也是更想符合标准一些

阅读 8.6k
6 个回答

你的做法是正确的,因为Gopkg.lock和Gopkg.toml 已经决定了vendor,不必再推送

我是包含了的( https://gitee.com/johng/gf ),因为有一些依赖关系,并且go get又不会自动去下载项目依赖的第三方包,再者有的第三方包让用户自己去下载超级慢(例如:golang.org/x),索性就一同包含在项目中了,很好地解决了依赖问题,用户使用时也省事。

但这样做的问题是,项目作者需要自己维护vendor中依赖的第三方包版本,并且vendor中的第三方包更新也会不及时,当然这问题比较于带来的好处来讲,还是可以接受的。

仅供参考。

一般来说是没有必要的

但是如果你的依赖包有特定的要求,或者墙外世界太多

就会出现以下解决方案

  • 上传vendor
  • 归档文件包(例如PHP的YII2

而在公司私有库开发的话,挺多都会上传vendor,为了便捷

我个人觉得如果是项目的话就包含 vendor , 如果只是库的话就不包含 vendor,

按版本控制的角度看是不用的,但是现在go没有很好的依赖管理的工具(glide算很好的了),你也可以把vendor加进去

公司项目还是上传吧,大量的包需要翻墙才能安装

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题