depからgo modへ移行する
昔作ったツールを整理しようと思ったので、ついでにパッケージ管理をgo modにした。
予習
Go Modulesについてふわっとしか知らないので、改めて確認しておく。
以下を参考にした。
- Using Go Modules - The Go Blog
- 最近のGo Modulesプラクティス ~ ghqユーザーの場合も添えて | おそらくはそれさえも平凡な日々
- https://budougumi0617.github.io/2019/02/15/go-modules-on-go112/
とりあえず、
- 今まで通り
GOPATH
配下で GO111MODULE=on
にする
と良さそうなので、そうした。
作業
ひとまずgo mod init
する。
% go mod init go: creating new go.mod: module github.com/kawaken/funi go: copying requirements from Gopkg.lock % cat go.mod module github.com/kawaken/funi go 1.12 require gopkg.in/yaml.v2 v2.2.2
go.mod
が作成された。
不要になるファイルを削除する。
% rm Gopkg.* rm: remove regular file 'Gopkg.lock'? y rm: remove regular file 'Gopkg.toml'? y % rm -fr vendor/
この状態でビルドしてみる。
% go build go: finding gopkg.in/yaml.v2 v2.2.2 go: finding gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 go: downloading gopkg.in/yaml.v2 v2.2.2 go: extracting gopkg.in/yaml.v2 v2.2.2 % cat go.sum gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
問題なさそうなので、コミットする。
% git status -s D Gopkg.lock D Gopkg.toml ?? go.mod ?? go.sum % git add go.mod go.sum % git rm Gopkg.lock Gopkg.toml rm 'Gopkg.lock' rm 'Gopkg.toml' % git commit -m "dep to go mod" [master e300c2d] dep to go mod 4 files changed, 8 insertions(+), 51 deletions(-) delete mode 100644 Gopkg.lock delete mode 100644 Gopkg.toml create mode 100644 go.mod create mode 100644 go.sum
もともとvendor
ディレクトリは管理してないんだった。
gopkg.inはどうする?
公式のWikiに以下のように記述されているので問題なさそう。
- gopkg.in
Existing code that uses import paths starting with gopkg.in(such as gopkg.in/yaml.v1 and gopkg.in/yaml.v2) can continue to use those forms for their module paths and import paths even after opting in to modules.
おしまい