composer.json 檔案作用
在工程的根目錄下composer.json所定義的包稱為root包。下面是對Composer配置檔案composer.json中的命令的初步解釋。
1.require 格式為: "require":{"vendor-name/package-name":"version", ...} 名字部分會作為vendor下的路徑進行建立 版本支援精確的版本號,也支援範圍如>=1.0; >=1.0,<2.0; ","作為邏輯與,而"!"作為邏輯或的意思。示例中使用了萬用字元* 版本也支援tag或branch名稱。 類似的有require-dev,前者用於宣告專案釋出版本的依賴包,後者用於宣告專案開發或測試中依賴的包。 2.autoload composer支援PSR-0,PSR-4,classmap及files包含以支援檔案自動載入。PSR-4為推薦方式。 2.1 Files型別 格式:"autoload":{"files":["path/to/1.php","path/to/2.php",...]} 支援將陣列中的檔案進行自動載入,檔案的路徑相對於專案的根目錄。缺點是麻煩,需要將所有檔案都寫進配置。 2.2 classmap型別 格式:"autoload":{"classmap": ["path/to/src1","path/to/src2",...]} 支援將陣列中的路徑下的檔案進行自動載入。其很方便,但缺點是一旦增加了新檔案,需要執行dump-autoload命令重新生成對映 檔案vendor/composer/autoload_classmap.php。 2.3 psr-0型別 格式:"autoload":
{
"psr-0":
{
"name1\\space\\":["path/",...], "name2\\space\\":["path2/",...], } } 支援將名稱空間對映到路徑。名稱空間結尾的\\不可省略。當執行install或update時,載入資訊會寫入vendor/composer/autoload_namespace.php檔案。如果希望解析指定路徑下的所有名稱空間,則將名稱空間置為空串即可。 需要注意的是對應name2\space\Foo類的類檔案的路徑為path2/name2/space/Foo.php 2.4 psr-4型別 格式:"autoload":
{
"psr-4":
{
"name1\\space\\":["path/",...],
"name2\\space\\":["path2/",...],
}
}
支援將名稱空間對映到路徑。名稱空間結尾的\\不可省略。當執行install或update時,載入資訊會寫入vendor/composer/autoload_psr4.php檔案。如果希望解析指定路徑下的所有名稱空間,則將名稱空間置為空串即可。
需要注意的是對應name2\space\Foo類的類檔案的路徑為path2/space/Foo.php,name2不出現在路徑中。
PSR-4和PSR-0最大的區別是對下劃線(underscore)的定義不同。PSR-4中,在類名中使用下劃線沒有任何特殊含義。而PSR-0則規定類名中的下劃線_會被轉化成目錄分隔符。
3.name
格式:"name":"vendor/package"
如果要釋出一個包,你需要指定包的名字資訊。
4.version
格式:"version":"1.0.2"
如果要釋出一個包,你需要指定包的版本號。版本號的格式為X.Y.Z或vX.Y.Z,其後可以加字尾如-dev,-patch,-alpha,-beta或-RC。除dev外,尾上還可加一個數字,如1.0.0-alpha3。
5.description
格式:"description":"your own description at here!"
如果要釋出一個包,可以指定一個簡短的介紹
6.type
格式:"type":"library"
說明包的型別,支援如下library,project,metapackage,composer-plugin,預設為library
7.keywords
格式:"keywords":["logging","database","redis"]
一個數組的關鍵字,用於搜尋或過濾時使用。
8.homepage
可選的,說明專案的網站地址
9.time/license
說明專案的時間和License,時間格式為YY-MM-DD HH:MM:SS
10.authors
格式:"authors":[
{"name":"ss","email":"