共通モジュールを隔離する

共通モジュールを隔離する方法をまとめました。

動作環境

ホストOSWindows 10 21H1(19043.2130) 64bit
WSL2
Visual Studio Code1.70.2
Docker Desktop4.12.0(85629)
Go1.19.2

サンプル

下記コマンドで隔離することができます。

go mod vendor

使い方の流れを下記にまとめました。

アプリを用意する

下記のような構成とします。

.
├── samplehello
│   └── samplehello.go
├── main.go

モジュールをダウンロードする

プロジェクトルートにmodファイルを作ります。

go mod init [モジュール名] # ここではsampleにしました。
.
├── go.mod
├── samplehello
│   └── samplehello.go
├── main.go

プロジェクトルートで下記コマンドを実行します。

go mod tidy
.
├── go.mod
├── go.sum
├── samplehello
│   └── samplehello.go
├── main.go

実行する

この時点の実行結果は下記の通りです。

go run *.go

==========
Hello, WORLD :)

モジュールを隔離する

下記コマンドを実行することで、依存しているモジュールをvendorフォルダに隔離することができます。

go mod vendor
.
├── go.mod
├── go.sum
├── main.go
├── samplehello
│   └── samplehello.go
└── vendor
    ├── github.com
    │   └── mitikusaEngineer
    │       └── GoSample
    │           └── hello
    │               └── hello.go
    └── modules.txt

vendor内のモジュールを更新して実行する

下記コードに更新します。

vendor内のコードが優先されることが確認できました。

go run *.go

==========
Hello, WORLD ^^b