Laravel Composer 版本約束條件

版本約束條件說明

Composer 支援多種版本約束語法,用於指定套件安裝的版本範圍。


1. 具體版本號

指定精確的版本號,僅安裝該版本:

"package/name": "1.0.0"

2. 範圍約束

使用比較運算符指定版本範圍:

語法 說明
>1.0.0 高於 1.0.0 的版本
>=1.0.0 1.0.0 及更高版本
<2.0.0 低於 2.0.0 的版本
<=2.0.0 2.0.0 及更低版本
!=1.0.0 不等於 1.0.0 的版本
1.0.0,2.0.0 僅允許安裝 1.0.0 或 2.0.0

3. 波浪符號約束 (~)

允許修補版本或小版本更新(取決於指定的版本欄位):

語法 含義
~1.0 等同於 >=1.0.0, <2.0.0
~1.2 等同於 >=1.2.0, <1.3.0

4. 插入符號約束 (^)

允許向後相容的版本更新:

語法 含義
^1.0 等同於 >=1.0.0, <2.0.0
^1.2 等同於 >=1.2.0, <2.0.0
^0.3 等同於 >=0.3.0, <0.4.0
^0.0.3 等同於 >=0.0.3, <0.0.4

當主版本號為 0 時,表示 API 仍在開發階段,不會允許主版本號變動。


5. 通配符約束 (*)

使用星號接受任意版本(適合在測試或開發中使用):

語法 含義
* 任何版本
1.0.* 等同於 >=1.0.0, <1.1.0
1.* 等同於 >=1.0.0, <2.0.0

Laravel Composer 版本約束條件(進階語法補充)

6. 多重條件

可以使用空白或逗號來表示 AND 條件(所有條件需同時成立)

"package/name": ">=1.0 <2.0"

等同於:

"package/name": ">=1.0, <2.0"

7. 邏輯組合(OR)條件

使用 ||| 表示 OR 條件(任一條件符合即可)

"package/name": "^1.0 || ^2.0"

安裝任何符合 ^1.0^2.0 的版本。


8. 範圍並列

可以列出多個版本範圍條件,Composer 會安裝符合其中任一條件的版本:

"package/name": ">=1.0 <1.5 || >=2.0 <2.5"

9. 排除特定版本

可以使用 != 排除特定版本:

"package/name": ">=1.0 <2.0 !=1.3.0"

代表安裝 1.0 以上但小於 2.0 的版本,排除 1.3.0


10. 穩定版本限制

如果需要避免安裝 dev 或 alpha、beta 等版本,可使用 minimum-stabilityprefer-stable

"minimum-stability": "stable",
"prefer-stable": true

11. 版本解析優先順序

Composer 會依照以下優先序解析版本:

  1. 精確版本(如 1.2.3
  2. 插入符號(^
  3. 波浪符號(~
  4. 範圍(如 >=1.0 <2.0
  5. 通配符(*
  6. dev 分支版本(如 dev-master

補充範例

"require": {
  "vendor/package": "^1.2 || ^2.0",   // 接受 1.2.x 或 2.0.x
  "another/package": ">=1.4 <1.8",    // 指定範圍
  "legacy/package": "!=1.5.2",        // 排除某一版本
  "unstable/package": "1.0.*@dev"     // 指定非穩定版本(需附加穩定標籤)
}

參考文件