Go 1.25でgo.modに追加された新しいignoreディレクティブについて、Finatextグループのテックブログを筆者Reo Uehara氏が検証しています。ignoreはgo build ./...やgo list allなどのパッケージパターンのマッチから特定のディレクトリを除外できる機能です。
パスの書き方によって挙動が変わり、./付きで指定するとモジュールルートからの相対パス指定に、./なしで指定すると任意の深さにある同名ディレクトリすべてが除外対象になります。筆者は構文エラーを含むディレクトリを用意し、ignore ./brokenを追加したところgo build ./...が失敗から成功に変わったことや、pkg/experimentalとexperimentalという異なる階層の同名ディレクトリが両方除外されることを確認しました。なお、除外されたディレクトリは配布物(zipファイル)からは削除されません。
モノレポ環境でnode_modulesをパッケージ探索から除外すればビルド時間短縮やgopls(Go言語サーバー)の負荷軽減が期待できるほか、AI開発時代の一時的なコード(./scratchや./agent-draftsなど)をCI対象から除外しつつ保持する使い方も紹介されています。
出典が伝えている要点
- Go 1.25でgo.modに
ignoreディレクティブが追加された ignoreディレクティブは、go build ./...やgo list allなどのパッケージパターンのマッチから特定のディレクトリを除外できる機能である./付きのパス(例:ignore ./experimental)を指定するとモジュールルートからの相対パスとして扱われる./なしでディレクトリ名を指定すると、任意の深さにある同名ディレクトリすべてが除外対象になる- ignoreディレクティブで除外されたディレクトリは配布物(zipファイル)からは削除されない
- 筆者Reo Ueharaは構文エラーを含むファイルを用意して動作検証を行った
ignore ./brokenをgo.modに追加したところ、go build ./...が失敗から成功に変わったことを確認した- 筆者は
pkg/experimentalとexperimentalという異なる階層の同名ディレクトリが両方とも除外されることを確認した - モノレポ環境で
node_modulesをパッケージ探索から除外することで、ビルド時間短縮とgoplsの負荷軽減が期待できる - AI開発時代の活用例として、
./scratchや./agent-draftsのような一時的なコードをCI対象から除外しつつ保持する使い方が挙げられている - この記事はFinatextグループのテックブログに掲載されている