Goで作ったライブラリのバージョンアップ手順

1 min read読了の目安(約1200字

初めに

以前Goでクリップボードから画像を取得&保存できるライブラリclipboard-imageを作りました。

ただ、関数名が気に入らなかったので名前を変えてv1->v2にアップしてgo getしたら次のエラーが出ました。

go get github.com/skanehira/clipboard-image@v2.0.0: github.com/skanehira/clipboard-image@v2.0.0: invalid version: module contains a go.mod file, so major version must be compatible: should be v0 or v1, not v2

go modulesを使っているからなのか、少々面倒だったのでv1以上にする手順を残しておきます。

手順

以下通りにやれば、バージョンアップできるはずです。

  1. ライブラリのgo.mod/v2をつける
    変更前

    module github.com/skanehira/clipboard-image
    

    変更後

    module github.com/skanehira/clipboard-image/v2
    
  2. タグをつけてpush

    git tag v2.0.0
    git push origin --tags
    
  3. 利用する側でgo get module/v2

    go get github.com/skanehira/clipboard-image/v2
    
  4. importにバージョンをつける

    import (
    	"github.com/skanehira/clipboard-image/v2"
    )
    

解説

どうやらgo modulesを使っているライブラリをv1以上にする場合は、module@2.0.0ではなくmodule/v2というふうにgo.modに定義する必要があるようです。
詳細は参考文献のgo get の動作メモを参照ください。

参考文献