手头项目有有 Go 写的,但自己有段时间没有关注 Go 了,之前官方有钦定一个包管理器,现在主流的是哪个?
1
myyou 2019-03-18 16:30:47 +08:00 1
go mod
|
2
nimrc 2019-03-18 16:31:24 +08:00
dep
|
3
rayhy 2019-03-18 16:33:03 +08:00 via Android
Go mod。现在都开始或者已经切到这个上面了。升级一下 golang 就行。
说起来,想稍带问问 golang 现在用哪个 error 包? go2 的出来还有一段距离,但如果用 pkg/errors,可能很快就得切,还能和 go2 兼容吗? |
4
toma77 2019-03-18 16:37:04 +08:00
我们前端用的 govendor,后端用的 go mod,前端不用 go mod 主要是前端都是 vscoder,没有提示跳转。。
|
5
reus 2019-03-18 16:53:40 +08:00
go 命令自带的
谁还用其他的就是自找麻烦 |
6
huiyifyj 2019-03-18 16:55:23 +08:00
go mod 啊
go1.11 开始支持了。 但还是吐槽下,go 的包管理真的垃圾 |
7
pmispig 2019-03-18 16:59:27 +08:00
什么? go 有包管理器?
|
8
janxin 2019-03-18 17:00:03 +08:00 1
go mod,vscode 用 LSP,不用 LSP 会非常难用
|
10
sulinehk 2019-03-18 17:28:59 +08:00 via Android
@rayhy 如果你说的是 error 包装之类的功能的话,现在标准库里面的 error 包就有了
|
11
meteor957 2019-03-18 17:39:37 +08:00
gopm
|
12
rayhy 2019-03-18 17:47:34 +08:00 via Android
|
13
Heavytiger 2019-03-18 17:48:55 +08:00
go mod + 1
|
14
kiwier 2019-03-18 18:00:47 +08:00
go dep、vgo 或者 go mod
|
16
janxin 2019-03-18 18:03:42 +08:00
@rayhy 使用 fmt 的 Errorf 功能或者 golang.org/x/xerrors,功能会在 1.13 版本中进入标准库
|
17
xfriday 2019-03-18 18:12:33 +08:00
go mod + goland
|
19
releaseme 2019-03-18 18:15:45 +08:00
@reus 如果你指的灵活性是指 安装指定 tag,commit,branch git repo 依赖,nodejs 几年前就有了,rust 应该也有
|
20
justfly 2019-03-18 18:17:36 +08:00
官方搞了 go mod,所以以后这是趋势,写代码中去不用千里迢迢跑到像 java 一样深的 GOPATH 目录下了。
但是这货有一些坑,比如默认忽略 vendor,对于 cgo 的库,用前需要 configure 根据环境的生成 c 代码的基本无解,go mod vendor 不会把他认为你用不到的文件放到 vendor 文件夹,即使他已经下载下来了,一些要 go generate 或者 cgo 的依赖文件就很麻烦 |
22
mnhkahn 2019-03-18 18:22:38 +08:00
go mod
|
23
silenceshell 2019-03-18 18:25:32 +08:00 via Android
|
24
2bab 2019-03-18 18:42:01 +08:00
Go Mod,毋庸置疑。
要说 Go 的这些管理器哪里难用,其实是因为跟其他平台比,比如 Maven 和 NPM,所以才显得它太基础。 讲道理就得举个例子,比如是否可以暴露 API 让我写点脚本管理一些依赖的细节,我有 100 个直接依赖,然后带来 500 个间接依赖,可能为了兼容,我不一定就按照『优先版本高的』原则去采纳每个间接依赖,这方面 Gradle 可能就很 easy 的实现了。 |
25
haozibi 2019-03-18 18:47:00 +08:00
推荐是 go mod,但是在 Mac 下 用 go mod 管理的 VSCode 有点卡,所以我暂时用 dep
|
26
huiyifyj 2019-03-18 20:17:59 +08:00 via Android
@yanjinbin #21
版本号有时候太难看了,尤其是那些没有打 tag 的 git 依赖库。 没有中央仓库,想想如果依赖库的 git 仓库被删除,会产生很多问题。 对比 npm,maven,gradle,cargo,pypi,go mod 有些不办理,也不方便。期待以后的改善吧,其实可以借鉴 rust 的 cargo。听说以后会有官方中央仓库。 |
27
silenceshell 2019-03-18 20:32:47 +08:00
|
28
huiyifyj 2019-03-18 20:45:02 +08:00
|
29
ecrazy 2019-03-18 21:01:11 +08:00 via iPhone
go mod 比 dep 好用
|
30
littlewing 2019-03-18 21:39:24 +08:00 via iPhone
glide
|
31
chenqh 2019-03-18 21:42:59 +08:00
@silenceshell 现在不是 2019 年吗
|
32
mason961125 2019-03-18 21:44:41 +08:00
go mod,然后所有依赖整理到 vendor,push 的时候带着 vendor。
|
35
fivestrong 2019-03-18 23:58:08 +08:00 via Android
go 的包管理是真垃圾,感觉还没 rust 的 cargo 好用。
|
36
blless 2019-03-19 00:54:47 +08:00 via Android
go mod 我觉得已经可以了,中心仓库对项目其实也没啥提升?依赖库被删不放心可以自己 fork 一个,用两年也没看见被删的库。包管理这种东西我真觉得够用就好,而且明明 go get 易用性实用性都很强,我敢说大部分项目 go get 就搞定了
|
38
Sparetire 2019-03-19 02:05:10 +08:00 via Android
"你没有 xx 特性 /功能" "某某有也没啥提升"
"你没有 xx 特性 /功能" "够用就好" "你没有 xx 特性 /功能" "在进步,好很多了,多努力" "你为什么没有 xx 特性 /功能" "某某更烂你咋不说" 也许还会有诸如 "又不是不能用" "你是不是针对*" "太平洋又没加盖(划掉,走错片场了),开源的觉得不好用有本事你就提 PR 啊" 类似的逻辑在哪都能见到很多呢。。不过我这条回复对解决楼主问题是毫无帮助,和问题也毫不相干,只是对本帖众多回复的一个观察 |
39
OldPanda 2019-03-19 04:06:31 +08:00
[go mod]( https://github.com/golang/go/wiki/Modules) +1
|
40
blless 2019-03-19 06:57:19 +08:00 via Android 1
@Sparetire 何必阴阳怪气的呢直接点名就好啊,不服可以反驳。至少目前我们自己项目用 go mod 之前用 govendor,都是把依赖直接固化在项目内。单元测试 覆盖测试 持续集成都是没有问题的。我说对项目提升不大也是建立在至少目前我们自己场景没有遇见啥坑的情况下说的。中央仓库对我上面那条场景有提升?
真要说有啥问题,一个是翻墙拉依赖,还有个引用的两个库依赖同一个不同版本的包这种。前者 goproxy.io 上面有人提过了,自己内网搭建一个代理都可以。后者写项目两年了,实际压根没遇到。所以现在到底 go 的包管理做成啥样你才会觉得够用? |
41
zqx 2019-03-19 07:39:43 +08:00 via Android
有没有人普及一下和 python 的 pip,node 的 npm 的比较
|
42
duanquanyong 2019-03-19 07:44:39 +08:00 via iPhone
go mod 很好用,而且下个版本支持中央仓库了
|
43
wweir 2019-03-19 08:31:26 +08:00 via iPhone
go mod + 自己写的透明代理方案( sower )
|
44
blless 2019-03-19 08:31:44 +08:00 via Android
@zqx 固化依赖到项目中在我们的开发规范是很重要的一个环节,可以有效节省其他组员管理 更新 下载的时间成本。也可以规避掉一些因为版本代码不一致的隐藏 bug。
pip 我没做过固化的方案,只写过 requirements.txt 。对于不需要编译的包还好,需要编译的时候就一言难尽。 npm 固化依赖大家都知道啥叫依赖地狱了,200M 起步…不敢想象大型项目得吃多少。 其他包管理大同小异,跟 go 最大不同就是有中央仓库,版本标记比较清晰。go mod 虽然现在版本也有了,但是一些旧的包没有遵循 go mod 规范。 npm 最大区别是每个依赖都有自己的独立依赖,不知道现在有没有改进,其他包管理就不熟悉了。 |
45
Marmot 2019-03-19 09:12:52 +08:00
go mod 1.11+官方自带
|
46
bruinxs 2019-03-19 09:21:17 +08:00
gx
|
47
jlkm2010 2019-03-19 09:57:41 +08:00
go mod
|
48
index90 2019-03-19 09:59:05 +08:00
一直觉得 G 家那种,所有依赖用最新的思路,才是正路。只是我们凡人无法理解……
|
50
cloverstd 2019-03-19 10:03:48 +08:00 via iPhone
go mod + vscode 自动补全好卡( slow )
|
51
peyppicp 2019-03-19 10:22:31 +08:00 via iPhone
我司用 govendor
vendor 也一起提交到 git |
53
Gea 2019-03-19 10:48:37 +08:00
@janxin 你好,请问这个 lsp 是怎么用的,还有我用了 go mod 在 mac 的 vscode 上跳转十分慢,有什么办法吗?
|
55
karllynn 2019-03-19 10:59:45 +08:00
1.12 已经集成了。。
|
56
janxin 2019-03-19 11:08:49 +08:00
@Gea 可以使用这个工具 https://github.com/saibing/bingo,使用方法就是先安装,然后配置 vscode-go 即可。
https://github.com/saibing/bingo#vscode-go |
57
keysona 2019-03-19 11:09:59 +08:00
go mod + goproxy
真爽。谁用谁知道.... |
58
h2ero 2019-03-19 12:54:51 +08:00
go mod
|
59
burtbai 2019-03-19 13:48:26 +08:00
https://github.com/gogradle/gogradle 我对这个很感兴趣,虽然主要是个构建工具
|
60
strahe 2019-03-19 14:00:36 +08:00
go mod + goproxy
|
66
markx 2019-03-20 00:53:25 +08:00
有点吃惊,居然有这么多人推荐 dep 甚至其他第三方的。 每个版本更新的博客还是很推荐读一读的。
|
67
hzfyjgw 2019-03-20 08:46:12 +08:00 via Android
glide 推的好少
|
68
reus 2019-03-20 09:17:27 +08:00
|
70
bigpigeon 2019-03-20 09:38:52 +08:00
踩过 glide 和 module 来述苦一下
都不好使 glide 有时候的更新策略很迷,不会更新最新的包,有时候要删掉 vendor 旧包才更新 module 允许存在 2 个同样的包的不同版本,如果你这个包在 init 有共享资源就坑爹了,比如在 init 注册了一个 http 服务之类的,而且 module 在使用 etcd3.3 会有错误要手动 @none,各种奇怪问题层出不断 |
71
janxin 2019-03-20 10:08:40 +08:00
|
72
liuxin5959 2019-03-20 10:21:54 +08:00
@toma77 Go 还有前端后端之分?
|
73
toma77 2019-03-20 11:01:04 +08:00
@liuxin5959 是我司前端要写 go。。
|
75
homfen 2019-03-20 18:49:48 +08:00
godep 还可以
|
76
renshaojuncool 2019-03-20 18:55:11 +08:00 via Android
推荐 go mod,趋势。现在用的 govendor,很不方便。
|
77
imkerberos 2019-03-28 17:07:51 +08:00
cargo 你值得拥有.
|