我们在GitHub经常看到有这样的结构:
在三方库下面依赖一个三方库:
我们可以看到这里就像一个软连接一样加载的三方库(还指定了版本)
请问我们在实际开发中如何这样做到呢?
比如,在VSCode中我怎么才能在vendor下这样进行"软连接"一个开源的三方库?
这个叫什么操作呢(应该有一个专业名词来描述此功能)?
我们在GitHub经常看到有这样的结构:
在三方库下面依赖一个三方库:
我们可以看到这里就像一个软连接一样加载的三方库(还指定了版本)
请问我们在实际开发中如何这样做到呢?
比如,在VSCode中我怎么才能在vendor下这样进行"软连接"一个开源的三方库?
这个叫什么操作呢(应该有一个专业名词来描述此功能)?
在实际开发中,将开源的三方库“软连接”到项目的vendor
目录(或者任何自定义的目录)通常指的是使用某种形式的符号链接(在Unix/Linux系统中)或者类似的功能(在Windows系统中)。然而,在现代的Go语言项目中,更常见的做法是使用依赖管理工具(如dep
、glide
、govendor
、go modules
等)来管理项目的依赖。
从Go 1.11版本开始,官方推荐使用go modules
来管理依赖。go modules
允许你定义项目的依赖项,并将它们存储在项目的go.mod
和go.sum
文件中,而不是将它们复制到vendor
目录。但是,如果你确实需要将依赖项复制到vendor
目录,你可以使用go mod vendor
命令。
但是,你的问题中的描述似乎指的是某种版本的软连接,这在Go中并不直接支持。不过,你可以通过以下步骤来模拟这种行为:
使用go get
安装或更新依赖项:
go get github.com/someuser/somepackage@v1.2.3
这将下载并安装指定版本的包到Go的GOPATH
或GOBIN
目录下的pkg/mod
目录中。
创建vendor
目录(如果尚未存在):
mkdir -p vendor
使用ln -s
(在Unix/Linux系统上)创建符号链接:
由于Go不支持在vendor
目录下直接创建对pkg/mod
中包的符号链接,你需要手动复制或创建占位符文件,并可能需要在构建过程中进行特殊处理。但是,如果你只是想在文件系统级别模拟这种行为,你可以这样做(注意,这通常不推荐用于Go项目,因为它可能不会被Go的构建系统识别):
ln -s $GOPATH/pkg/mod/github.com/someuser/somepackage@v1.2.3 vendor/github.com/someuser/somepackage
但是,请注意,$GOPATH/pkg/mod
的结构可能会随着Go的版本和依赖管理工具的不同而有所变化,因此上述路径可能需要根据实际情况进行调整。
mklink
命令来创建符号链接或目录链接(类似于Unix/Linux的ln -s
)。但是,请注意,Windows的文件系统对符号链接有一些限制,并且可能需要管理员权限来创建它们。专业名词:
go mod vendor
将依赖项复制到vendor
目录的行为被称为vendoring。但是,这不是软连接,而是物理复制。最后,再次强调,对于Go项目,通常建议使用go modules
来管理依赖项,而不是手动创建符号链接或复制文件到vendor
目录。
8 回答4.8k 阅读✓ 已解决
3 回答2.7k 阅读✓ 已解决
6 回答3.5k 阅读✓ 已解决
3 回答4.2k 阅读✓ 已解决
5 回答2.9k 阅读✓ 已解决
6 回答2.4k 阅读
5 回答6.4k 阅读✓ 已解决
你可以了解一下git submodule项目子模块 你可以看一下相关文档
https://blog.csdn.net/u013013938/article/details/130662112