Composerでのバージョンの指定方法
PHPのパッケージマネージャーのComposerでのパッケージのバージョンの指定方法がよくわからなかったので整理した。
composer.jsonなどをみると,バージョン欄が^1.2
などになっており,他にも~1.2
などいくつか記法があった。比較演算子 (><=!
) やワイルドカードを使ったものはなんとなく分かるが,^
と~
にどういう意味があるのか,他の指定方法との対応関係などがわからず混乱した。
そこで,公式の「Versions and constraints – Composer」を元に,対応関係を以下の表に整理した。
演算子 | 例 | 範囲 | 説明 |
---|---|---|---|
Exact Version Constraint | 0.3.0 | バージョンの特定。最も正確でシンプル。 | |
Version Range | >=0.3 <1.1 | 演算子による汎用範囲指定。演算子に>, >=, <, <=, != が使え,論理積 (スペース またはコンマ, ) と論理和 (|| ) も使用可能。 | |
Version Range | >= 1.0 <1.1 || >=1.2 | ||
Hyphenated Version Range | 0.3 - 1.0 | >=0.3 <1.1 | バージョンの範囲指定。 |
Wildcard Version Range | 0.3.* | >=0.3 <0.4.0 | 桁の指定。 |
Wildcard Version Range | 0.* | >=0.0 <1.0.0 | |
Tilde Version Range | ~0.3 | >=0.3 <1.0.0 | セマンティックバージョン疑似準拠。 |
Tilde Version Range | ~1.2.3 | >=1.2.3 <1.3.0 | |
Caret Version Range | ^0.3 | >0.3.0 <0.4.0 | セマンティックバージョン準拠。ただし,1.0以前は慎重。ライブラリーコード用に推奨。 |
Caret Version Range | ^1.2.3 | >=1.2.3 <2.0.0 |
バージョンの指定方法がいろいろあるのだが,結論としては特に理由がなければ常にCaret Version Range (^) を使っておけば,互換性の面で安全だろう。
万が一,1.0未満のバージョンを指定する場合は,プロジェクトの安定状況に応じてTilde Version Rangeの使用も検討してよいだろう。
バージョンの指定方法がいろいろあってややこしかったが,今後は^
を使うことにする。
リンク