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

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

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

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

Composerのバージョン表記
演算子範囲説明
Exact Version Constraint0.3.0
バージョンの特定。最も正確でシンプル。
Version Range>=0.3 <1.1
演算子による汎用範囲指定。演算子に>, >=, <, <=, !=が使え,論理積 (スペース またはコンマ,) と論理和 (||) も使用可能。
Version Range>= 1.0 <1.1 || >=1.2

Hyphenated Version Range0.3 - 1.0>=0.3 <1.1バージョンの範囲指定。
Wildcard Version Range0.3.*>=0.3 <0.4.0桁の指定。
Wildcard Version Range0.*>=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の使用も検討してよいだろう。

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

コメントを残す

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