depからgo modへ移行する
2019-05-31 / Go
昔作ったツールを整理しようと思ったので、ついでにパッケージ管理を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.
おしまい