Edited at

Goのモジュール管理(vgo)

久しぶりにメンテしようと思ってみたものの、モジュール管理方法を忘れてググるところから始めないといけない...。覚えているからドキュメントはいらないと思っていた事もありました。そんな過去の自分にイラっとしたついでに調べてみたらモジュール管理が便利になっていたのでメモしておきます。


0.はじめに(苦労)

えっと、Godepsってディレクトリーがあるな...ということはgodepってやつか。 go get github.com/kr/godep っと。godep get...あれ、goなんてPC入れ替えてからコンパイルしてないけど、どこにインストールされたかな?go env。あー、ここか。/User/hoge/go/bin/dep getっと。

godep: [WARNING]: godep should only be used inside a valid go package directory and

godep: [WARNING]: may not function correctly. You are probably outside of your $GOPATH.
godep: [WARNING]: Current Directory: /Users/hoge/dev/***
godep: [WARNING]: $GOPATH:
godep: Unable to find SrcRoot for package .

プッチーン。

「めんどくさいから一つづつgo getすりゃいいんだろ!」


1. Modules(vgo)を使ってみる

Go 1.11よりModules(vgo)という仕組みが標準装備になっているようです。

ということでやってみます。

go mod init

go: creating new go.mod: module hoge
go: copying requirements from Godeps/Godeps.json

なんと、秘伝のGodepsもちゃんと移行してくれたようです。

go.modとgo.sumというファイルが増えています。

使い方は?...そのまま実行するだけ?

go run hoge.go             

go: finding github.com/julienschmidt/httprouter v0.0.0-20160219154026-77366a47451a
go: downloading github.com/julienschmidt/httprouter v0.0.0-20160219154026-77366a47451a
go: extracting github.com/julienschmidt/httprouter v0.0.0-20160219154026-77366a47451a

これはなかなか便利です。go getでインストールするだけで、バージョン管理もきちんとされるようです。開発環境をdockerなどに展開していても、普通にbuildできるので非常に便利です。


2.モジュールのアップデートをする

使っているhttprouterは2016年のファイルっぽいですね...。動いた後の放置されっぷりがよくわかります。アップデートはgo get -uのようです。

go get -u

go: finding github.com/julienschmidt/httprouter v1.2.0
go: downloading github.com/julienschmidt/httprouter v1.2.0
go: extracting github.com/julienschmidt/httprouter v1.2.0

これで最新のものにアップデートすることができました。go.modファイルもきちんと書き変わっています。


その他

しばらくGo使っていなかったので、久しぶりの進化にびっくりしました。


参考

詳細については他の

https://qiita.com/propella/items/e49bccc88f3cc2407745

https://www.wantedly.com/companies/wantedly/post_articles/132270