独自の Go ライブラリをオープンソースにする方法

リリース: 2023-07-24 15:15:42
転載
836 人が閲覧しました
#Go プロジェクトを開発するとき、私たちは外部の依存関係パッケージを使用することがよくあります。これらは通常、<span style="font-size: 15px;">go get example.com/xxx</span> という形式のコマンドを通じてローカルで使用するために取得されます。

オープンソースの精神に基づき、開発したパッケージを他の人が使用できるように共有したい場合は、<span style="font-size: 15px;">go get</span> コマンドでそれらを取得した場合はどうすればよいですか?

この記事では、例として Github プラットフォームへのオープンソースを取り上げ、プロセスを示します。

ウェアハウスの作成

まず、github プラットフォーム上にウェアハウスを作成し、オープンソースにする Go ライブラリの名前を設定します。ここでは、プロジェクト名はpublishdemo、ステータスはPublicです。

独自の Go ライブラリをオープンソースにする方法

モジュール コードの開発

git clone コマンド開発を通じて、作成したウェアハウスをローカルにプルします。

$ git clone git@github.com:golangShare/publishdemo.git
ログイン後にコピー

現時点では、プロジェクトのルート ディレクトリ <span style="font-size: 15px;">publishdemo/</span> の下には、LICENSE ファイルと README ファイルのみが含まれており、Go コードは含まれていません。含まれています。

$ ls
LICENSE   README.md
ログイン後にコピー

プロジェクトの MOD ファイルを初期化する

$ go mod init github.com/golangShare/publishdemo
ログイン後にコピー

Go ツールのクラス ライブラリをオープンソースにしたいとします。この時点では、最初に文字列に関連する操作を提供します。したがって、<span style="font-size: 15px;">publishdemo/</span> ディレクトリに、<span style="font-size: 15px;">stringutil/</span> サブディレクトリを追加します。 、サブディレクトリに reverse.go ファイルを追加します。その内容は次のとおりです。

package stringutil

// Reverse returns its argument string reversed rune-wise left to right.
func Reverse(s string) string {
 r := []rune(s)
 for i, j := 0, len(r)-1; i < len(r)/2; i, j = i+1, j-1 {
  r[i], r[j] = r[j], r[i]
 }
 return string(r)
}
ログイン後にコピー

これは非常に簡単です。私たちが提供したいのは文字列反転関数です。

もちろん、テストコードも提供する必要があります。以下の内容の reverse_test.go ファイルを同じレベルのディレクトリに追加します。

package stringutil

import "testing"

func TestReverse(t *testing.T) {
 for _, c := range []struct {
  in, want string
 }{
  {"Hello, world", "dlrow ,olleH"},
  {"Hello, 世界", "界世 ,olleH"},
  {"", ""},
 } {
  got := Reverse(c.in)
  if got != c.want {
   t.Errorf("Reverse(%q) == %q, want %q", c.in, got, c.want)
  }
 }
}
ログイン後にコピー

プロジェクトのルートディレクトリに戻ります この時のコード構成は以下の通りです

.
├── LICENSE
├── README.md
├── go.mod
└── stringutil
    ├── reverse.go
    └── reverse_test.go

1 directory, 5 files
ログイン後にコピー

テストコードも通過しました

$ go test ./...
ok   github.com/golangShare/publishdemo/stringutil 0.005s
ログイン後にコピー

開発が完了したら、ツール ライブラリを共有できます。

リリース

#モジュール内で不要になった依存関係の記録を回避するには、 go mod tiny を実行して依存関係を削除します。

$ go mod tidy
ログイン後にコピー

git tag コマンドを使用してバージョン情報をマークします

$ git commit -m "add Reverse: for v0.1.0"
$ git tag v0.1.0
ログイン後にコピー

リモート ウェアハウスにプッシュします

$ git push origin v0.1.0
ログイン後にコピー

使用

发布之后,其他项目就可以通过以下命令获取我们开源的 Go 包了。

$ go get github.com/golangShare/publishdemo@v0.1.0
ログイン後にコピー

此时项目 go.mod 文件中,将会增加以下一行记录

require github.com/golangShare/publishdemo v0.1.0
ログイン後にコピー

和其他三方库一样的方式使用即可

package main

import (
 "fmt"
 "github.com/golangShare/publishdemo/stringutil"
)

func main() {
 s := stringutil.Reverse("hello gopher")
 fmt.Println(s)
}
ログイン後にコピー

总结

看完了上述流程,可以发现:开源自己的 Go 库,其实非常简单。

以上が独自の Go ライブラリをオープンソースにする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
go
ソース:Go语言进阶学习
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート