- 首页
- 专栏
-
Go Modules 终极入门
Go modules 是 Go 语言中正式官宣的项目依赖解决方案,Go modules(前身为vgo)于 Go1.11 正式发布,在 Go1.14 已经准备好,并且可以用在生产上(ready for production)了,Go官方也鼓励所有用户从其他依赖项管理工具迁移到 Go modules。 而 Go1.14,在近期也终于正式发布,Go 官方亲自 "喊" 你来用: 因此在今天这篇文章中,我将给大家带来 Go modules 的 "终极入门",欢迎大家一起共同探讨。 Go modules 是...
-
Go 语言的 Modules 系统介绍
即将发布的 Go 语言 1.11 版本将会给我们带来对 *modules*(模块)的实验性支持,这是 Go 语言新的一套依赖管理系统。 (译注:很多编程语言中,把 modules 译作「模块」,但由于目前该机制在 Go 语言还没正式发布,因此尚未有非常普及的译法。而类似的 vendor 一词的翻译,大多中文文章都是采取保留英文原文的方式处理,因此本文对 modules 的翻译参考 vendor 的处理:保留英文原文) 前些日子,[我简单地写了一编关于它的文章](https://rob...
-
定义 Go 模块(vgo)
本文译自 Defining Go Modules, Go & Versioning 的第 6 部分, 版权@归原文所有. 正如在概述文章中介绍的, Go 模块是作为一个版本化的软件包集合单元, 连同列出其他所需模块的 go.mod 文件. 转向模块是我们重新审视和修正 go 命令如何管理源代码的许多细节的机会. 在我们打算使用模块弃用当前的 go get 模型时, 10 年已经过去了. 我们需要确保模块设计将在未来十年为我们提供良好的服务. 尤其是: 我们希望鼓励更多的开发人员为他们的软件包打标...
-
可复制, 可验证, 已验证的构建(vgo)
本文译自 Reproducible, Verifiable, Verified Builds, Go & Versioning 的第 5 部分, 版权@归原文所有. 一旦 Go 开发人员和工具都共享了包版本控制的词汇表, 那么在工具链中添加可复制, 可验证以及已验证的构建就相对简单了。事实上, 这基本上已经在 vgo 原型中了. 由于人们有时对这些术语的确切定义不一致,让我们来建立一些基本的术语. 这篇文章: 一个可复制的构建, 当重复构建时, 会产生相同的结果. 一个可验证的构建, 记录足够的...
-
最小版本选择(vgo)
本文译自 Minimal Version Selection, Go & Versioning 的第 4 部分, 版权@归原文所有. 版本化的 Go 命令必须决定在每个版本中使用哪个模块版本. 我把指定构建中用到的模块和版本列表称之为构建列表. 为了稳定开发, 今天的构建列表也必须是明天的构建列表. 但是, 开发人员也必须允许更改构建列表: 升级所有模块, 升级一个模块或降级一个模块. 因此版本选择问题是定义其意义并给出算法实现, 构建列表中的 4 个操作为: 构造当前的构建列表. 将所有模块升...
-
也许 Go 开发可以更简单!Go += Package Versioning
> > 简评:对于Go来说一直以来依赖包的版本控制上没有一个好的方案,尽管社区诞生了不下十余个解决该问题的工具,但一直以来没有一个官方的支持。这个提案有望在Go > 的下个版本中看到官方的包版本控制了,去除了GOPATH依赖,同时还引入了module 的概念,真正意义上实现了重编译,可谓一次大的变更 是时候为 Go 添加包版本控制了! 更确切地说,我们需要把包版本的概念普及到Go 开发者和工具常用词汇中,以便在后续的相互沟通时能准确一致的表达哪些程序代码需要编译、运行和解析。同样,go 命...