Composerでのバージョンの指定方法

PHPのパッケージマネージャーのComposerでのパッケージのバージョンの指定方法がよくわからなかったので整理した。

composer.jsonなどをみると,バージョン欄が^1.2などになっており,他にも~1.2などいくつか記法があった。比較演算子 (><=!) やワイルドカードを使ったものはなんとなく分かるが,^~にどういう意味があるのか,他の指定方法との対応関係などがわからず混乱した。

そこで,公式の「Versions and constraints – Composer」を元に,対応関係を以下の表に整理した。

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の使用も検討してよいだろう。

バージョンの指定方法がいろいろあってややこしかったが,今後は^を使うことにする。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です