go mod和go vendor

go mod
1.11之后开始能支持的一个包的管理,解决的问题是golang不再依赖gopath的设置,下载下来的包可以直接使用。

#问题:不是很友好

目前已经更新到1.12版本,但是go mod还是不太友好,使用起来不太方便。 开发的时候还是需要go get提前下载包,然后再应用。 只有要打包的时候执行一套命令

go mod init ./  
go build main.go 或 go build -mod=vendor main.go  
go mod vendor #将包打到vendor文件夹下  

用起来有点尴尬 。。。

go vendor
管理Golang项目依赖,应该是一个第三方的,但是比较好用。

安装
go get -u github.com/kardianos/govendor

使用一套连招:

govendor init # 创建vendor目录,创建vendor.json文件  
govendor add +external #生成依赖包  
govendor update +vendor # 更新vendor的包命令  
状态缩写状态含义
+local l 本地包,即项目自身的包组织
+external e 外部包,即被 $GOPATH 管理,但不在 vendor 目录下
+vendor v 已被 govendor 管理,即在 vendor 目录下
+std s 标准库中的包
+unused u 未使用的包,即包在 vendor 目录下,但项目并没有用到
+missing m 代码引用了依赖包,但该包并没有找到
+program p 主程序包,意味着可以编译为执行文件
+outside   外部包和缺失的包
+all   所有的包
命令功能
init 初始化 vendor 目录
list 列出所有的依赖包
add 添加包到 vendor 目录,如 govendor add +external 添加所有外部包
add PKG_PATH 添加指定的依赖包到 vendor 目录
update 从 $GOPATH 更新依赖包到 vendor 目录
remove 从 vendor 管理中删除依赖
status 列出所有缺失、过期和修改过的包
fetch 添加或更新包到本地 vendor 目录
sync 本地存在 vendor.json 时候拉去依赖包,匹配所记录的版本
get 类似 go get 目录,拉取依赖包到 vendor 目录

结论:go mod没成熟之前还是不要用了,死都不知道怎么死的。

郝先生

继续阅读此作者的更多文章