Golang
go module
早期go语言单纯使用GOPATH管理依赖,但不方便管理依赖的多个版本;后来增加vendor,允许把项目依赖连同项目源码一同管理;Go1.11引入了go module,Go1.14使go module成熟。
三个阶段: GOPATH => go vnedor => go module
1.GOROOT:GO编译器和GO标准库,属于GO顶级目录
2.GOPATH :GO项目是由一个或多个package组成。package:标准库、第三方库、项目私有库。 标准库位于GOROOT下,第三方库项目私有库位于GOPATH下。 GOPATH只是用户工作空间目录的环境变量,属于用户域范畴。用户的项目需要位于GOPATH/src下。 当某个package需要引用其他包时,查找顺序:GOROOT/src、GOPATH/src。
3.vendor:建议每个项目下只在项目根目录下有一个vendor目录,来存放需要的第三方库。
当某个package需要引用其他包时,查找顺序:vendor、GOROOT/src、GOPATH/src。 缺点:存在项目体积变大、项目依赖关系不清晰、依赖包升级不方便。
4.Go Module:Go1.11采用新方案解决依赖管理,推出Go Module。
解决问题:准确记录项目依赖、可重复构建 module:项目。包含一个或多个package。 仓库、module、package关系:一个仓库包含一个或多个module(推荐一个库包含一个module)、每个module包含一个或多个package、每个package包含一个或多个源文件。 module命名规范:..... go.mod文件:通过指令声明module信息。module、require、replace、exclude。 go.sum文件:通过记录依赖包的hash值。
viper
链接: viper
seelog
链接: seelog