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