如何分发Go模块

2023-12-16 08:33:50

引言

许多现代编程语言允许开发人员分发现成的库供其他人在其程序中使用,Go也不例外。虽然有些语言使用中央存储库来安装这些库,但Go从用于创建库的相同版本控制存储库分发它们。Go还使用名为semantic versioning的版本控制系统向用户显示何时进行了哪些类型的更改。这有助于用户了解模块的新版本是否可以安全地快速升级,并有助于确保他们的软件继续与模块一起工作。

在本教程中,您将创建和发布一个新模块,学习使用语义版本控制,并发布模块的语义版本。

创建要发布的模块

与许多其他编程语言不同,Go模块直接从其所在的源代码库中分发,而不是独立的包库。这使得用户更容易找到在他们的代码中引用的模块,也使得模块维护者更容易发布他们模块的新版本。在本节中,我们将创建一个新模块,然后发布它,让其他用户也可以使用它。

要开始创建模块,你需要在你创建的空仓库上使用git clone,这是下载初始仓库的先决条件之一。这个仓库可以复制到你电脑上的任何地方,但许多开发人员倾向于为他们的项目创建一个目录。在本教程中,你将使用一个名为projects的目录。

创建projects目录并导航到它:

mkdir projects
cd projects

projects目录下,运行git clone将你的仓库克隆到你的电脑上:

git clone git@github.com:your_github_username/pubmodule.git

克隆模块会将空模块下载到projects目录下的==pubmodule==目录中。你可能会得到一个警告,说你克隆了一个空仓库,但这没什么好担心的:

OutputCloning into 'pubmodule'...
warning: You appear to have cloned an empty repository.

接下来,切换到你下载的目录:

cd pubmodule

进入模块目录后,你将使用go mod init来创建新模块,并将存储库的位置作为模块名称传递。确保模块名称与仓库位置匹配很重要,因为这是go工具在其他项目中使用模块时找到下载位置的方式:

go mod init github.com/your_github_username/pubmodule

Go will confirm your module is created by letting you know it’s created the go.mod file:
Go将通过让您知道它已创建 go.mod 文件来确认您的模块已创建:

Outputgo: creating new go.mod: module github.com/your_github_username/pubmodule

最后,使用你最喜欢的文本编辑器,例如nano,创建并打开一个与仓库同名的文件:==pubmodule==.go

nano pubmodule.go

这个文件的名称可以是任何东西,但使用与包相同的名称可以让你在使用不熟悉的包时更容易知道从哪里开始。不过,包名本身应该与仓库名相同。这样,当有人从你的包中引用方法或类型时,它与存储库匹配,例如pubmodule.MyFunction。这将使他们更容易知道包从哪里来,以便他们以后需要引用它。

接下来,在包中添加一个Hello方法,它将返回字符串Hello, You!。任何导入你的包的人都可以使用这个函数:

projects/pubmodule/pubmodule.go

package pubmodule

func Hello() string {
   
  return "Hello, You!"
}

现在,您已经使用go mod init创建了一个新模块,其模块名称与远程存储库(github.com/==your_github_username==/pubmodule)匹配。你还向模块中添加了一个名为pubmodule.go的文件,其中包含一个名为Hello的函数,模块的用户可以调用它。接下来,发布模块,让其他人也能使用它。

发布模块

创建好本地模块并准备好让其他用户可以使用后,就可以发布模块了。由于Go模块来自存储它们的相同代码仓库,因此您将将代码提交到本地Git仓库并将其推送到github.com/==your_github_username==/pubmodule仓库。

在将代码提交到本地Git仓库之前,最好确保不会提交任何你不打算提交的文件,这些文件会在你将代码推送到GitHub时被公开发布。在pubmodule目录下使用git status命令,你将看到所有要提交的文件和更改:

git status

输出类似于下面这样:

OutputOn branch main

No commits yet

Untracked files:
  (use "git add <file>..." to include in what will be committed)
	go.mod
	pubmodule.go

您应该看到go mod init命令创建的go.mod文件,以及您在其中创建的Hello函数的==pubmodule==.go文件。根据您创建存储库的方式,可能会有与此输出不同的分支名称。最常见的名称是main

文章来源:https://blog.csdn.net/QIU176161650/article/details/134974511
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。