gpt4 book ai didi

GoLang - 项目结构 - 第三方库的 vendor/文件夹

转载 作者:行者123 更新时间:2023-12-01 22:39:28 24 4
gpt4 key购买 nike

关闭。这个问题是opinion-based .它目前不接受答案。












想改进这个问题?更新问题,以便 editing this post 可以用事实和引用来回答它.

2年前关闭。




Improve this question




方法一

对于任何应用程序项目结构,author推荐以下应用项目结构:

    Application

├── cmd/
├── internal/
│ └── platform/
└── vendor/

在哪里 vendor/文件夹有第 3 方库 项目结构内 ,其中大部分是 go get 'ble,但是 到 GitHub 存储库(在上述情况下)。推 /vendor GitHub 存储库的文件夹看起来没有必要

方法二

我一般 go get第 3 方进入公共(public)本地工作区文件夹( ~/golib),即 外部项目结构 ,并由 GOPATH 驱动设置如下图。因此,与第 3 方相关的代码是 未推送 到 GitHub:
export GOPATH=/home/user/golib
export PATH=$PATH:$GOPATH/bin
# First segment of GOPATH is used by "go get" command
# All segments of GOPATH are used for source code
export GOPATH=$GOPATH:/home/user/code

在方法1中,维护 vendor/有什么好处?第 3 方的文件夹,在应用程序项目结构中并推送到 GitHub 存储库?不像方法2

最佳答案

Go 1.6 中添加了对 vendor 文件夹的支持,以帮助您获得您知道适用于您的代码的包的版本,以防进行了非向后兼容的更改并且您无法确定 repo 中的哪个版本是一个您使用过(或者更糟糕的情况是 repo 完全消失)。

使用最近的 Go 版本中添加的模块可以避免使用 vendor 文件夹方法,这允许您通过保证使用相同版本的包来获得可重复的构建。 Go Modules 类似于您的 方法二 但在 Go 编译器和工具中有更好的支持。

总之:您的方法应该是使用带有模块的 Go 1.14。

关于GoLang - 项目结构 - 第三方库的 vendor/文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61602857/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com