前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >2019年8月21日 Go生态洞察:迁移到Go模块

2019年8月21日 Go生态洞察:迁移到Go模块

作者头像
猫头虎
发布2024-04-08 14:49:22
850
发布2024-04-08 14:49:22
举报
文章被收录于专栏:猫头虎博客专区

2019年8月21日 Go生态洞察:迁移到Go模块 🌐

摘要

🐯 嗨,猫头虎博主在此!今天我们将探索2019年8月21日发布的Go生态系列文章的第二部分,专注于迁移到Go模块。Go模块是Go 1.11中引入的官方依赖管理解决方案,本文将详细介绍如何将项目转换为模块。无论您是初次接触Go模块还是寻求深入理解,这篇文章都将为您提供宝贵的洞见。🔍

引言

🔎 Go模块系统为Go项目提供了内置于go命令的官方依赖管理。这篇文章,作为系列的第二部分,将深入讲解如何将Go项目迁移到模块系统,包括不同项目状态的迁移策略。

正文

项目迁移概览 🔄

Go项目在开始转换到模块时可能处于三种状态之一:

  • 全新的Go项目。
  • 使用非模块依赖管理器的成熟Go项目。
  • 没有任何依赖管理器的成熟Go项目。

本文将主要关注后两种情况的迁移过程。

使用依赖管理器的项目 🧰

对于已经使用依赖管理工具的项目,可以通过以下命令进行转换:

代码语言:javascript
复制
$ git clone https://github.com/my/project
[...]
$ cd project
$ go mod init github.com/my/project
go: creating new go.mod: module github.com/my/project
go: copying requirements from Godeps/Godeps.json
$ cat go.mod
module github.com/my/project

go 1.12

require rsc.io/binaryregexp v0.2.1-0.20190524193500-545cabda89ca
$

go mod init将创建一个新的go.mod文件,并自动从Godeps.jsonGopkg.lock或其他支持的格式导入依赖项。

没有依赖管理器的项目 📦

对于没有依赖管理系统的Go项目,首先要创建一个go.mod文件:

代码语言:javascript
复制
$ git clone https://go.googlesource.com/blog
[...]
$ cd blog
$ go mod init golang.org/x/blog
go: creating new go.mod: module golang.org/x/blog
$ cat go.mod
module golang.org/x/blog

go 1.12
$

接下来,运行go mod tidy以添加模块的依赖项。

测试和发布 🚀

迁移到模块后,确保代码构建和测试通过是非常重要的。一些测试可能需要在模块模式下进行调整。最后,您应该为新模块标记并发布一个版本。这是可选的,但没有官方发布,下游用户将依赖于特定提交。

总结

🎯 转换为Go模块对大多数用户来说应该是一个直接的过程。偶尔可能会因非规范导入路径或依赖项中的重大更改而出现问题。未来的文章将探讨发布新版本、v2及以上版本的模块,以及调试奇怪情况的方法。

🔗 本文被猫头虎的Go生态洞察专栏收录,详情点击这里

参考资料

  1. Jean de Klerk, “Migrating to Go Modules”, 21 August 2019.
  2. Go官方博客: https://go.dev/blog.
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-11-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 2019年8月21日 Go生态洞察:迁移到Go模块 🌐
    • 摘要
      • 引言
        • 正文
          • 项目迁移概览 🔄
          • 使用依赖管理器的项目 🧰
          • 没有依赖管理器的项目 📦
          • 测试和发布 🚀
        • 总结
          • 参考资料
          相关产品与服务
          腾讯云服务器利旧
          云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档