问题标签 [vendoring]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
go - 我如何提供一个本身提供另一个包的包?
我正在尝试编写一个使用此包的应用程序。我有以下片段:
这会导致以下编译错误:
这是因为github.com/ChimeraCoder/anaconda
正在使用供应商。
那么我怎样才能创建一个实例*oauth.Credentials
呢?
go - 使用 go dep 忽略并防止 vendored 包被删除?
我有一点问题,我有一个我依赖的 Go 项目(DPkg),这个项目对另一个包(TPkg)有一些小的依赖。
由于某些与问题无关的原因,我目前无法构建 TPkg 但是我知道我从未使用过调用 TPkg 的 DPkg 部分,所以我继续在我的供应商文件夹中重新创建了一个假 DPkg。
问题是每当我运行时dep ensure
,dep 都会尝试处理这个包。我试图ignored
在我的 Gopkg.toml 中设置一个约束,但随后 dep 只是删除了我在供应商文件夹中的代码。我还尝试进一步添加一个prune.project
约束来将 TPkg 标记为,unused-packages = false
但这并不能阻止 dep 删除包。
有什么方法可以告诉 dep完全忽略 TPkg并且我的意思是,不要尝试更改或删除它?
我知道这意味着什么,以及它在问题和可维护性方面有多糟糕,但这不是这里的问题。
amazon-web-services - 为什么 AWS elastic beanstalk 无法构建我的应用程序?
我有一个用 Go 编写的应用程序,我试图将其部署到 EB。尝试访问它时,我从 nginx 收到错误 502,可能是因为应用程序没有运行。
查看日志,我收到很多错误,例如
尽管事实上,我的所有依赖项都包含在vendor
子目录下的应用程序包中。为什么 EB 不使用 vendoring?根据仪表板,它运行的是 Go 1.9,因此应该支持 vendoring。
go - 位于另一个项目的供应商文件夹中的供应商包
我正在编写一个依赖于某些导入的库包,但我不确定如何正确处理它。
让我从目录结构开始:
项目 1 是一个图书馆。它在项目 2 中使用并被拉入 2s 供应商文件夹。因此,项目 1 应该包含其所有依赖项,以便客户端(例如项目 2)也不需要拉取它们。但是,项目 1 的一个依赖项是项目 4,它包含在项目 3 的供应商文件夹中。至关重要的是,此依赖项始终是项目 3 提供的版本。Go 不允许导入指向供应商文件夹中的包,因此我无法直接从那里导入它。我该如何用govendor解决这个问题?
go - 同时使用 Go 模块和供应商部署 Google Cloud Function
我正在尝试在 Go 中部署 Google Cloud 功能,但在部署时出错,因为我同时使用子包和“内部模块”(仅在我的主机上定义,未部署在任何地方)。我有以下结构:
我的function.go
(我的云功能的入口点)的内容:
主题已在此处单独介绍:
第一篇文章表示使用 vendoring 和 excludego.mod
并go.sum
从源代码中使用common
模块,而第二篇文章表示包含go.mod
和go.sum
不使用 vendoring 以便能够使用子包。
但我想知道:是否可以同时使用两者?或者供应商依赖项需要将所有.go
源文件放在同一个目录中(没有子包)?同样,使用子包需要不使用供应商?如何构建我的代码以避免这些限制,或者我能做什么(在common
某处部署模块,...)?
此外,有关 Go Cloud Functions 的“指定依赖项”的文档指出:
Go 中的 Cloud Functions 必须通过带有 go.mod 文件的 Go 模块或供应商目录提供所有依赖项。您的函数不能同时使用Go 模块和供应商目录指定依赖项。
hyperledger-fabric - 供应商链码具有错误的依赖关系
我有具有以下目录结构的链代码
由于我使用了超级账本cid
包,我使用了 vendoring 并将vendor
目录放在链代码旁边。现在对于 testablitiy,mycc.go
仅包含以下main
功能:
实现了链码的chaincode.go
其余部分,包括带有,等的MyChaincode
结构体。相关的导入与 中的相同:Init
Invoke
mycc.go
在链码的实例化过程中,似乎有些依赖项混淆了,因为我收到了错误消息:
很明显,内部链码包中的导入似乎被错误地解决了,供应商目录在路径中出现了两次。
go - 如何构建其依赖项依赖于另一个版本的项目依赖项的项目
想象一下,您有一个需要两个模块A
和B
. 我将调用项目模块P
。假设P
需要A v1.0.0
,B v1.1.0
并且A
需要B v1.0.0
。此外B
,没有遵守语义版本控制规则,因此版本更改v1.0.0 -> v1.1.0
引入了破坏性 API 更改。所以
P
只能用v1.1.0
和A
只用 构建v1.0.0
。
依赖图:
有什么方法可以用不同的版本构建这个项目。我听说过供应商,但我不确定这是否会导致依赖项使用不同的B
模块版本。
如果它可以为冲突的包版本提供解决方案,如果依赖项在其 git 存储库中不包含供应商文件夹(有人说,您不应该上传供应商文件夹),go 工具是否会使用供应商识别模块(在此case 模块A
不附带供应商文件夹,但开发人员go mod vendor
在本地调用),go get 命令是否尊重依赖项的供应商文件夹(或者它是否可以检测到模块在没有上游供应商文件夹的情况下使用了供应商)?
go - 供应商是一种标准方法还是已经过时?
我即将在 Go 中设置一个新项目。我遇到了供应商一词。是这个标准还是一个过时的概念。我来自 nodejs 世界,这感觉就像将 nod_modules 文件夹复制到单独的目录,还是我混淆了整个目的?
go - 使用内部私有函数的谷歌云函数
项目看起来像这样
在 cmd/function 中,go.mod 如下所示:
它在本地运行良好,但是,当部署为云函数时,它不起作用,因为云函数只包含“cmd/function”目录。
相反,我尝试将模块复制到项目目录中并替换。
但是这个替换似乎被忽略了,因为 Cloud Function deploy 构建仍然试图下载这个包。
接下来,我尝试使用 go mod vendor,并忽略 go.mod 和 go.sum 文件。这似乎可以解决问题,但并不完全,因为删除了 go.mod,我不能再使用内部包了。
不知道我将如何解决这个问题并且仍然能够使用内部包名称。
编辑:添加了一个显示错误的存储库,并通过在库名称中不使用 internal 关键字进行了简单修复。https://github.com/lobbin/gcloud-function-error
go - 管理通过非标准端口访问的自定义 Go 模块
背景
在我的公司,我们使用 Bit Bucket 来托管我们的 git 存储库。到服务器的所有流量都流经一个自定义的非标准端口。从我们的 repos 克隆看起来像git clone ssh://git@stash.company.com:9999/repo/path/name.git
.
问题
我想创建托管在此服务器上并由 管理的 Go 模块go mod
,但是,流量必须流经端口的事实9999
使得这非常困难。这是因为go mod
在标准端口上运行,并且似乎没有提供为不同模块定制端口的方法。
我的问题
是否可以使用go mod
非标准端口来管理托管在私有 git 服务器上的 Go 模块?
尝试的解决方案
贩卖
这似乎是最接近提供解决方案的方式。首先go mod vendor
是想要使用这些 Go 模块的 Go 应用程序,然后是目录git submodule
中的 Go 模块。vendor/
在需要更新或添加模块的情况下,这可以完美运行。go mod tidy
将一直无法下载或更新其他 Go 模块,因为它无法访问自定义 Go 模块的“git URL”。即使-e
设置了标志。
编辑.gitconfig
编辑.gitconfig
以将不带端口的 URL 替换为带端口的 URL 是一种可行的解决方案,但这是一个非常肮脏的 hack。首先,必须对任何新模块以及每个单独的开发人员进行这些编辑。其次,这可能会在处理这些存储库时阻止其他 git 进程。