go.modのReplaceディレクティブ

ローカル開発、依存関係のフォーク、バージョンオーバーライドのためのgo.mod replaceディレクティブをマスターします。実用的な例を含む単一行およびブロック構文を学びます。

Directives

詳細な説明

Replaceディレクティブ

go.modのreplaceディレクティブは、モジュールを別の場所またはバージョンにリダイレクトします。Go開発ワークフローで最も強力で頻繁に使用される機能の1つです。

基本構文

単一行形式:

replace github.com/original/module v1.2.3 => github.com/fork/module v1.2.4

ブロック形式:

replace (
    github.com/original/module v1.2.3 => github.com/fork/module v1.2.4
    github.com/other/module    v0.5.0 => github.com/other/module v0.6.0
)

一般的なユースケース

1. ローカル開発 依存関係をローカルのチェックアウトに向けて反復的な開発を行う。

2. フォーク置換 上流の修正を待つ間、フォーク版を使用する。

3. バージョンオーバーライド セキュリティ脆弱性をパッチするために特定のバージョンを強制する。

重要な注意事項

  • Replaceディレクティブはメインモジュールでのみ適用される(依存関係では無効)
  • ローカルパス置換は相対パス(../)または絶対パスを使用する必要がある
  • go mod tidyはreplaceディレクティブを自動的に削除しない

ユースケース

Replaceディレクティブはライブラリ開発中に依存関係への変更を公開前にテストする必要がある場合に不可欠です。マイクロサービスと共有ライブラリを扱うチームは毎日ローカルリプレースを使用します。フォーマッターはreplaceブロックをクリーンかつ整列された状態に保ちます。

試してみる — go.mod Formatter

フルツールを開く