ふと耳にしたので箇条書きでメモる。間違ってたらごめんなさい。
- 「パッケージ」はモジュールより細かい、可視性の制御単位
- Golangaでは、依存グラフがどのように解決されたかの情報を含むlockファイルは存在しない。
- 以下の方法で解決している。
- go.modには下限制約しか書けず、インストールするモジュールは最小(最古)バージョンに解決する
- (c.f) bundleだと上限も制限でき、インストールするモジュールは依存関係を満たした上での最新バージョンになっていたはず
- 同一パッケージの下限制約のmajor versionが違ったらどうなる?
- どうなるかはわからないが、以下の方法でこの問題を避けることはできる。
- メジャーバージョンをパッケージ名に含める(e.g.
module github.com/my/mod/v2
)ことで、プロジェクト内で同一パッケージの複数のバージョンが共存することが許容される。(Semantic Import Versioningと呼ばれる) → 参考