开发golang库时,我们是否应该始终将自己的包放在供应商/文件夹中?

开发golang库时,我们是否应该始终将自己的包放在供应商/文件夹中?,go,vendor,glide-golang,Go,Vendor,Glide Golang,最近我读了一篇文章,有一些建议,其中之一是: 库(没有主包的代码库)不应将外部包存储在其VCS中的供应商/文件夹中,除非它们有特定的原因并理解这样做的原因 我的问题是: 根据该建议,在开发golang library时,我们是否应始终将自己的软件包(而不是那些第三方软件包)放入供应商/文件夹?“外部软件包”是指本回购协议之外的软件包。因此,如果包与导入它们的代码处于不同的回购协议中:是的,提供它们 如果在实现库时只想编写和使用多个包:否,请将它们放在供应商/库repo外部的子文件夹中 比如说 。

最近我读了一篇文章,有一些建议,其中之一是:

库(没有
包的代码库)不应将外部包存储在其VCS中的
供应商/
文件夹中,除非它们有特定的原因并理解这样做的原因

我的问题是:

根据该建议,在开发golang library时,我们是否应始终将自己的软件包(而不是那些第三方软件包)放入
供应商/
文件夹?

“外部软件包”是指本回购协议之外的软件包。因此,如果包与导入它们的代码处于不同的回购协议中:是的,提供它们

如果在实现库时只想编写和使用多个包:否,请将它们放在供应商/库repo外部的子文件夹中

比如说

。。。
▸ 服务器/
server.go“包服务器”
▸ 贮藏/
▸ testutils/
▾ 卖主/
▸ bitbucket.org/
▸ github.com/
...

“外部包”是指本回购协议之外的包。因此,如果包与导入它们的代码处于不同的回购协议中:是的,提供它们

如果在实现库时只想编写和使用多个包:否,请将它们放在供应商/库repo外部的子文件夹中

比如说

。。。
▸ 服务器/
server.go“包服务器”
▸ 贮藏/
▸ testutils/
▾ 卖主/
▸ bitbucket.org/
▸ github.com/
...

不,在供应商/目录中添加您自己的包是没有意义的,因为供应商目录用于项目外部的代码


这个建议的意思是:如果您正在开发一个库,不要使用vendor/来存储第三方库,除非您知道自己在做什么以及为什么要这样做。

不,在vendor/目录中添加您自己的包是没有意义的,因为vendor目录是用于项目外部的代码的


这个建议的意思是:如果你正在开发一个库,不要使用供应商/来存储第三方库,除非你知道你在做什么以及为什么要这样做。

虽然你的回答不是我问题的直接答案,但是你澄清了什么是“包装箱外”,这让我感到困惑。谢谢使我理解了为什么库不应该将第三方软件包放入
供应商/
目录。在开发库时,当我们将第三方软件包放入库的代码库目录结构中时,供应商软件包管理器(如
glide
如何管理它们?@BruceAuyeung我只使用了
godep
,使用它:运行
获取foo/package1 bar/package2…
将软件包安装到gopath中,然后运行
godep restore和&godep save./…
将软件包从gopath复制到
/vendor/
。我希望使用glide,您同样不必手动将任何内容放入供应商文件夹。但建议说不要将第三方LIB放入供应商文件夹,对吗?我只对具有main.go的程序有经验,所以我不知道为什么会提出此建议。如果您的代码需要依赖项,而您没有提供该依赖项,我希望用户必须手动
获取依赖项/…
,尽管您的回答不是我问题的直接答案,但您澄清了让我感到困惑的
外包装箱
的含义。谢谢使我理解了为什么库不应该将第三方软件包放入
供应商/
目录。在开发库时,当我们将第三方软件包放入库的代码库目录结构中时,供应商软件包管理器(如
glide
如何管理它们?@BruceAuyeung我只使用了
godep
,使用它:运行
获取foo/package1 bar/package2…
将软件包安装到gopath中,然后运行
godep restore和&godep save./…
将软件包从gopath复制到
/vendor/
。我希望使用glide,您同样不必手动将任何内容放入供应商文件夹。但建议说不要将第三方LIB放入供应商文件夹,对吗?我只对具有main.go的程序有经验,所以我不知道为什么会提出此建议。如果您的代码需要依赖项,而您没有提供该依赖项,我希望用户必须手动
go-get-dependency/…