composer包基本信息
- 包名name:包括供應商名稱和項目名稱;
- 描述description:一個包的簡短描述,這個最長只有一行;
- 版本version:X.Y.Z的形式,可選後綴:-dev -patch -alpha -beta 或 -RC,後綴之後可以再跟一個數字;
- 可以從VCS(GIT,SVN,HG)的信息推出包的版本號,這種情況可以忽略version;
- 安裝類型type:
- libraray:默認類型,將文件複製到vendor目錄;
- project:表示當前包是一個項目,不是一個庫;
- metapackage:當一個空的包,包含依賴並且需要觸發依賴的安裝,這將不會對系統寫入額外的文件。因此這種安裝類型並不需要一個 dist 或 source;
- composer-plugin: 一個安裝類型爲 composer-plugin 的包,它有一個自定義安裝類型,可以爲其它包提供一個 installler。
- 關鍵字keywords:該包相關的關鍵詞數組,可用於搜索和過濾;
- 項目主頁homepage:該項目網站的URL地址;
- 版本時間time:發版時間,必須符合YYYY-MM-DD 或 YYYY-MM-DD HH:MM:SS格式
- 許可協議license:可以是一個字符串或字符串數組,常見協議:Apache-2.0 BAD-2 Clause
- 作者authors:對象數組,包含name,email,homepage,role
- 支持support:獲取項目支持的相關信息
- minimun_stability:限定了最小穩定性版本,默認爲stable。
- 穩定性標識:dev、alpha、beta、RC、stable
- 作用:會對每個包的版本進行穩定性檢查,低於minimun-stability所設定的最低穩定性版本,將忽略
package links相關
以下所有對象,都應該是包名到版本的映射對象
{
"require": {
"monolog/monolog": "1.0.*"
}
}
-
require和require-dev的區別
- require:包含了生產環境所需的包,即運行代碼的必備包;
- require-dev:這個列表是爲開發或測試等目的,額外列出的依賴。“root 包”的 require-dev 默認是會被安裝的。然而 install 或 update 支持使用 --no-dev 參數來跳過 require-dev 字段中列出的包。
{ "require": { "monolog/monolog": "1.0.*" } "require-dev": { "acme/fo": "~1.17" } }
-
require和require-dev支持穩定性標籤(@),允許在minimun_stability設定的範圍外做進一步的限制和擴展。
{ "require": { "monolog/monolog": "1.0.*@beta", "acme/foo": "@dev" } }
-
suggest:建議安裝的包,它們增強或能夠與當前包良好的工作。這些只是信息,並顯示在依賴包安裝完成之後,給你的用戶一個建議,他們可以添加更多的包。
{ "suggest": { "monolog/monolog": "Allows more advanced logging of the application flow" } }
autoload
-
自動加載支持方式:PSR-0 autoloading,PSR-4 autoloading(推薦),classmap generation and files includes
-
PSR-4:定義了命名空間到實際路徑的映射。映射關係最終會存儲在vendor/composer/autoload_psr4.php
{ "autoload": { "psr-4": { "Foo\\": "src/", //比如Foo\\Bar\\Baz就去查找/src/Bar/Baz.php文件 "Vendor\\Namespace\\": "" //namespace 必須以\\結尾,避免被當做轉移字符處理 "psr-4": { "Monolog\\": ["src/", "lib/"] } //多個文件夾的映射 } } }
-
PSR-0:已廢棄,與PSR-4基本相同。映射關係最終會存儲在vendor/composer/autoload_namespaces.php中
{ "autoload": { "psr-0": { "Monolog\\": "src/", "Vendor\\Namespace\\": "src/", "Vendor_Namespace_": "src/" //支持下劃線分隔 "UniqueGlobalClass": "" //不限定於命名空間,可精確到類級別的指定 } } }
-
classmap:這個 map 是經過掃描指定目錄(同樣支持直接精確到文件)中所有的 .php 和 .inc 文件裏內置的類而得到的。存儲到vendor/composer/autoload_classmap.php 文件中。
{ "autoload": { "classmap": ["src/", "lib/", "Something.php"] } }
-
Files:你想要明確的指定,在每次請求時都要載入某些文件,那麼你可以使用 ‘files’ autoloading。通常作爲函數庫的載入方式(而非類庫)
{ "autoload": { "files": ["src/MyLibrary/functions.php"] } }
版本範圍
- 比較運算符:>,>=,<,<=,!=,可以定義多個範圍,用空格或逗號被視爲邏輯AND,雙管||被視爲邏輯OR;
- 帶連字符的版本範圍-:1.0 - 2.0 等價於 >=1.0.0 <2.1
- 帶通配符*:1.0.* 等價於 >=1.0 <1.1
- 下一重要版本:
- 波浪符:~1.2 等價於 >=1.2 <2.0.0,而 ~1.2.3 等價於 >=1.2.3 <1.3.0
- 脫字符版本範圍 ():1.2.3 等效於 >=1.2.3 <2.0.0