Replaceディレクティブによるローカルモジュール開発
replaceディレクティブを使用して依存関係をローカルパスに向けるGoのローカルモジュール開発をセットアップします。複数のモジュールを同時に開発するワークフローを学びます。
Directives
詳細な説明
ローカルモジュール開発
複数のGoモジュールを同時に開発する場合、ローカルパスを持つreplaceディレクティブにより、レジストリに公開せずに変更をテストできます。
基本セットアップ
my-service/go.mod内:
module github.com/myorg/my-service
go 1.22.0
require github.com/myorg/shared-lib v1.2.0
replace github.com/myorg/shared-lib => ../shared-lib
ローカルリプレースの動作
requireディレクティブは依然としてバージョン付きでモジュールをリストreplaceディレクティブはローカルファイルシステムパスにリダイレクト- ローカルパスは
./または../で始まる相対パスまたは絶対パスでなければならない
よくあるミス
コミット前にreplaceを削除し忘れる: CIはビルドサーバーに相対パスが存在しないため失敗します。
代替:Goワークスペース
Go 1.18+では、ローカル開発にreplaceディレクティブの代わりにgo.workファイルの使用を検討してください。ワークスペースはマルチモジュール開発用に設計されており、go.modの変更を必要としません。
ユースケース
ローカルモジュール開発は、複数のGoモジュールを維持するチームの日常的なワークフローです。バックエンドチームはロギング、認証、データベースアクセス用の共有ライブラリを持つことが多いです。replaceディレクティブを使用すると、公開前にモジュール境界を超えた変更をテストできます。