Golang 包管理的疑问. 目前的创建项目的顺序是: go mod init
把可能需要的包都 go get 下载. 编写主文件. go mod tidy
go mod vendor
请教, 应该是什么样的姿势? 我希望是直接把项目依赖安装到项目目录中... 比如 npm i xxx 或者像 python 那样有个虚拟环境?
1
Zhouisme 2021-11-28 22:36:06 +08:00 via Android
手动 git 下来放项目里,然后再绝对路径引用,就跟项目里的模块引用一样
Module 管理不香嘛,还可以管理版本 你这样的需求真是别致... |
2
jim9606 2021-11-28 23:58:51 +08:00
这年头就不要用 vendor 了,全用 go.mod 就行了,项目里不用放依赖的东西。
怕网络问题的设置一下 goproxy 就好了。 |
3
icy37785 2021-11-29 00:03:07 +08:00 via iPhone
直接用 go.mod 就好了呀。
|
4
timpaik 2021-11-29 00:03:23 +08:00 via Android
vendor 是上古的临时解决方案,目前已被弃置,有难以更新依赖等问题,不建议使用。
|
5
darksword21 2021-11-29 01:22:07 +08:00 via iPhone
搜索的时候可以加上 past year
|
6
missdeer 2021-11-29 09:24:42 +08:00
go.mod 里可以通过 replace 指定包的路径
|
7
eudore 2021-11-29 09:37:52 +08:00
在代码里面 import pkg 就好了,然后 gomod init gomod tidy 就自动填充 go.mod 内容并下载依赖到$GOPATH/pkg/mod 里面。
也可以手动 goget 添加库或者编辑 go.mod 文件。 |
8
Immortal 2021-11-29 09:46:37 +08:00
我们项目目前仍然使用 vendor 并且提交到代码库
和同事讨论过,主要两个原因: - 正如上面说的,怕有难下载的库.可能现在有 goproxy 了好了很多,早期一些 google/x/目录的库都已经迁移或者废弃,很折腾人. - CI/CD 编译不需要每次全量 download 依赖 |
10
masterclock 2021-11-29 11:22:00 +08:00
@ruanimal 应该是不行的
可以通过架设私有 proxy 解决 |
12
jeeyong OP 所以..有人愿意写个过程吗?
从创建一个项目开始.. go mod init 然后呢? 下载依赖库的姿势呢?就是 go get 吗? 接下来? |
13
cloudfstrife 2021-11-30 10:22:50 +08:00 1
go mod vendor 只用于一种情况,那就是:你的代码要在一个不能访问外网的环境下编译的时候,可以在外网 go mod vendro 然后打包,拷贝到内网编译。
一般可以访问外部网络的环境,我的过程是: go mod init xxxx.xxx/xxx/xxx touch main.go 实现功能,过程中如果要增加新的依赖,可以用 go get xxxx.xxxx/xxxx/xxx 写完用 go mod tidy 自动更新 go.mod go build 一般会写 Makefile ,我有一个仓库,用写了一些常用的 make 指令 ,用于构建 Go 项目: https://github.com/cloudfstrife/gomake |
14
skiy 2021-11-30 13:22:01 +08:00
不要说什么 vendor 是“上古临时方案”这种话了。用了开源库,项目稳定了之后,如果不 vendor ,要是源库删除了之后,你就知道抓狂了。整个项目都运行不了。你不能保证引用的库不会被删。
|
15
jeeyong OP @cloudfstrife 我只是单纯的想把所有依赖都放到项目目录中...这样做让我舒服...
|
16
liaohongxing 2021-12-01 17:27:31 +08:00
买个 clash 机场代理吧 ,google 都访问不了 。开发什么
|
17
Kisesy 2021-12-01 23:02:51 +08:00 1
go mod vendor 挺好的啊,你开发完了,执行一下,依赖库就直接打包到 vendor 目录下了,可以带着到处走,想编译的时候就编译,也不用联网
用法就是 go mod init xxx ,然后 go get yyyyy ,然后 go mod vendor 以后想更新依赖就再 go get ,然后再 go mod vendor |
18
jeeyong OP @liaohongxing 话说...Clash 我一直不知道怎么添加 Vmess 协议的服务器..
|
19
jeeyong OP @liaohongxing Clash 只支持订阅模式吗?
|