在工程的根目錄下composer.json所定義的包稱爲root包。下面是對Composer配置文件composer.json中的命令的初步解釋。php
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類型redis
格式:"autoload":json
{數組
"psr-0":composer
{ide
"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":網站
{ui
"psr-4":spa
{
"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":"ss@ss.com","homepage":"","role":""},...
]
用於說明項目的做者信息,爲可選的。
11.support
格式:"support":{"emial":"","issues":"","forum":"","wiki":"","irc":"" }
用於說明項目的支持信息
12.conflict
用於聲明與本包有衝突的包的版本,使用相似於require。
13.replace
用於聲明須要替換的包,使用相似於require
14.provided
用於說明本包實現了某個包的接口
15.suggest 格式:"suggest":{"vendor/package":"Some description!"} 用於說明可選的,用於加強功能的包及說明。