はじめに
こちらの内容を参考にしています。
pubspec.yamlのバージョン指定方法
ここでは、セマンティックバージョニングによってバージョン指定されていることを前提としています。
また、解説のため、メジャーバージョンはx,マイナーバージョンはy,パッチバージョンはzで表現しています。
DartのSemanticバージョニングについての説明はこちら
https://dart.dev/tools/pub/versioning#semantic-versions
未指定 or any
どのバージョンでもokという指定方法。
できる限り一番最新のバージョンがインストールされる。(他に指定しているライブラリのバージョンに依存している場合は、できる限り最新のバージョンになる)
dependencies:
rxdart: # どちらでもOK
provider: any # どちらでもOK
ただ、anyは、パフォーマンス上の理由から推奨されていないそうです。
x.y.z
記述したバージョンのみの指定。この場合は4.0.3が必ず取得される。
dependencies:
provider: 4.0.3
>=x.y.z
記述したバージョン以上の指定。この場合4.0.3は含まれる。
dependencies:
provider: >=4.0.3
>x.y.z
記述したバージョンより大きいバージョンの指定。この場合4.0.3は含まれない。
dependencies:
provider: >4.0.3
<=x.y.z
記述したバージョン以下の指定。この場合4.0.3は含まれる。
dependencies:
provider: <=4.0.3
<x.y.z
記述したバージョン未満の指定。この場合4.0.3は含まれない。
dependencies:
provider: <4.0.3
'>=a.b.c <x.y.z'
a.b.c以上、x.y.z未満という指定方法。
dependencies:
provider: '>=4.0.3 <5.0.0'
^x.y.z
Caret syntaxと呼ばれるもの。
指定したバージョンの下位互換性を担保できるものが指定でき、セマンティックバージョニングの慣例に従って指定される。
例えば、^2.1.0
と指定した場合、'>=2.1.0 <3.0.0'
の省略形として定義できる。
dependencies:
provider: '^4.0.3' # '>=4.0.3 <5.0.0'の意味
※Caret syntaxはDart1.8.3に追加されたので、1.8.3以上でないと使えないそうです。
まとめ
今までとりあえずCaret syntaxで指定していましたが、他にも色々指定方法があったので勉強になりました。参考になれば幸いです。