🔧
go mod tidyで消したくないmoduleも消えてしまう。
背景
go mod tidy
を実行した際、 import されていない module は削除してくれる。
その際、gqlgen などのコードジェネレート時にしか使わないmoduleも削除されてしまう。
go mod tidyについては、下記の記事にて。
解決策
公式に書いてあった。
then one currently recommended approach is to add a tools.go file to your module that includes import statements for the tools of interest (such as import _ "golang.org/x/tools/cmd/stringer"), along with a // +build tools build constraint. The import statements allow the go command to precisely record the version information for your tools in your module's go.mod, while the // +build tools build constraint prevents your normal builds from actually importing your tools.
tools.go
を作って、そこでインポートをしておく。
build tagをつけることで、go build
でビルド対象外とできる。
tools.go
// +build tools
package tools
import (
_ "github.com/99designs/gqlgen"
_ "github.com/golang/mock/mockgen"
_ "github.com/vektah/dataloaden"
_ "github.com/kisielk/errcheck"
)
参考
Discussion