Go 言語(以下 Golang)のソースコードの
main
パッケージで、アプリが利用しているモジュール/外部パッケージのバージョンを取得したい。
「"golang" import パッケージ モジュール バージョン 確認」でググっても、go get
するモジュールのバージョン指定しか出てこなかったので、自分のググラビリティとして。
TS; DR (今北産業)
-
runtime/debug パッケージの
debug.ReadBuildInfo()
を使いbuildInfo.Deps
で依存パッケージ(モジュール)情報からVersion
フィールドを参照する。(Go 1.12 以降) -
具体的なコード
package main import ( "fmt" "log" "golang.org/x/xerrors" "runtime/debug" ) func main() { buildInfo, ok := debug.ReadBuildInfo() if !ok { err := xerrors.New("failed to get build info") log.Fatal(err) } for _, modDep := range buildInfo.Deps { fmt.Println("module name:", modDep.Path) fmt.Println("module version:", modDep.Version) } } // Output: // module name: golang.org/x/xerrors // module version: v0.0.0-20200804184101-5ec99f83aff1
-
オンラインで動作をみる @ Go Playground