在當前主流的php框架中我們都會發現一個名為composer.json的文件,在下載的composer包中就可以看到composer.json文件,下面由composer使用教程欄目為大家介紹composer.json文件的作用、屬性及各個屬性的作用。
作用:
composer.json文件定義了您當前項目的依賴項,以及依賴項的一些相關信息
常見屬性說明:
1:name
表示包的名稱,由作者名稱和項目名稱組成,使用 / 分割
例如:
yiisoft/yii2-app-basic
包名稱可以包含任何字符,包括空格,并且不區分大小寫 ( yiisoft/yii2-app-basic 和 Yiisoft/Yii2-app-basic 會被認為是同一個包)。為了簡化安裝,建議定義一個不包含非字母數字字符或空格的短名稱
name這個屬性是composer.json文件的必要屬性
2:description?
表示包的簡短描述,通常這是一行介紹就行
description 這個屬性是composer.json文件的必要屬性
3:version
表示包的版本
版本的格式必須遵循? X.Y.Z 或 vX.Y.Z,可選后綴 -dev, -patch ( -p ), -alpha ( -a ), -beta ( -b ) 或 -RC, patch, alpha , beta 和 RC 后綴也可以跟一個數字
例如:
1.0.0
1.0.0-dev
version這個屬性是composer.json 文件的非必須屬性,一般可以省略
4:type?
表示包的類型,默認為庫 library
Composer 原生支持以下4種類型:
library: 默認類型,它只需要將文件復制到 vendor 目錄。
project: 當前包是一個項目,而不是一個庫。例如Yii框架中的composer.json文件的type值九尾project
metapackage: 包含需求并將觸發其安裝的空包,但不包含文件,并且不會向系統寫入任何內容。因此這種安裝類型并不需要一個 dist 或 source。
composer-plugin: 一個安裝類型為 composer-plugin 的包,它有一個自定義安裝類型,可以為其它包提供一個 installler
我們也可以定義一個自定義類型
type這個屬性是composer.json文件的非必須屬性
5:keywords
表示一組用于搜索與篩選的與包相關的關鍵字
keywords這個屬性是composer.json文件的非必須屬性
6:homepage
表示項目網站的 URL 地址
homepage這個屬性是composer.json文件的非必須屬性
7:readme
表示README 文檔的絕對路徑
readme這個屬性是composer.json文件的非必須屬性
8:time
表示包的版本發布時間
必須是 YYYY-MM-DD 或者 YYYY-MM-DD HH:MM:SS 格式
time這個屬性是composer.json文件的非必須屬性
9:license
表示包的許可證,可以是一個字符串或者是一個字符串數組
最常見的許可證推薦表示法如下:
Apache-2.0 BSD-2-Clause BSD-3-Clause BSD-4-Clause GPL-2.0-only?/?GPL-2.0-or-later GPL-3.0-only?/?GPL-3.0-or-later LGPL-2.1-only?/?LGPL-2.1-or-later LGPL-3.0-only?/?LGPL-3.0-or-later MIT
你如果想要知道許可證相關信息可以參考:https://spdx.org/licenses/
license這個屬性是composer.json文件的非必須屬性,但是建議提供此項信息
10:authors
表示包的作者,這是一個對象數組。
每一個作者對象可以包含以下屬性:
? ? name: 作者的名字。通常是真實姓名。
? ? email: 作者的郵件地址。
? ? homepage: 作者個人網站的 URL 地址。
? ? role: 作者在項目中擔任的角色(如:開發者或者譯者)。
例:
"authors":?[ ????????{ ????????????"name":?"huaweichenai", ????????????"email":?"243681093@qq.com", ????????????"homepage":?"https://www.wj0511.com/", ????????????"role":?"Developer" ????????} ????],
authors這個屬性是composer.json文件的非必須屬性,但是建議提供此項信息
11:support
表示獲取對項目支持的信息對象。
對象信息必須包括以下屬性:
? ? email: 項目支持 email 地址。
? ? issues: 跟蹤問題的 URL 地址。
? ? forum: 論壇 URL 地址。
? ? wiki:? Wiki URL 地址。
? ? irc: IRC 聊天頻道地址,as irc://server/channel.
? ? source: 網址瀏覽或下載源。
? ? docs: 文件的 URL 。
? ? rss: RSS 源的 URL 。
例:
"support":?{ ????????"issues":?"https://github.com/yiisoft/yii2/issues?state=open", ????????"forum":?"http://www.yiiframework.com/forum/", ????????"wiki":?"http://www.yiiframework.com/wiki/", ????????"irc":?"irc://irc.freenode.net/yii", ????????"source":?"https://github.com/yiisoft/yii2" ????},
support這個屬性是composer.json文件的非必須屬性
? ??
12:require
表示必須安裝的依賴包列表,這些包必須滿足條件,否則不會安裝
例:
"require":?{ ????????"yiisoft/yii2":?"*" ????},
require這個屬性是composer.json文件的非必須屬性
13:require-dev
表示開發或運行測試時的依賴包列表
require-dev這個屬性是composer.json文件的非必須屬性
14:autoload
表示PHP 自動加載的映射
支持 PSR-4 和 PSR-0 自動加載,class 映射 和 files 引用。
推薦使用 PSR-4 規范(添加類時,無需重新生成自動加載映射)
例:
"autoload":?{ ????????"psr-4":?{ ????????????"huaweichenaidiscern":?"src" ????????} ????}
表示自動加載當前的src目錄
autoload這個屬性是composer.json文件的非必須屬性
15:minimum-stability
這個屬性定義了按穩定性過濾包的默認值,默認為stable。所以如果你依賴dev 包,你應該在你的文件中指定。
所有包都將根據穩定性檢出相應的版本,那些低于 minimum-stability 設置的版本將被自動忽略。
minimum-stability這個屬性是composer.json文件的非必須屬性
16:repositories?
表示使用自定義的安裝源
Composer 默認只使用 packagist 的安裝源。通過定義 repositories 你可以從任何其他地方獲取包
例:
"repositories":?{ ????????"0":?{ ????????????"type":?"composer", ????????????"url":?"https://asset-packagist.org" ????????}, ????????"packagist":?{ ????????????"type":?"composer", ????????????"url":?"https://packagist.phpcomposer.com" ????????} ????}
repositories 這個屬性是composer.json文件的非必須屬性
20:config
表示一組配置選項。它僅用于項目
config屬性向有很多的屬性,了解config下面的相關屬性,參考:https://laravel-china.org/docs/composer/2018/06-config/2087
config屬性中有一個常見的屬性
process-timeout:請求過程超時設置
config 這個屬性是composer.json文件的非必須屬性
21:scripts?
表示Composer 允許再安裝過程的各個部分中執行腳本
script相關信息參考:https://laravel-china.org/docs/composer/2018/scripts/2095
例:
"scripts":?{ ????????????//當項目里有?composer.lock?文件的情況下調用?install?命令后執行 ????????"post-install-cmd":?[ ????????????"yiicomposerInstaller::postInstall" ????????], ????????//當?create-project??命令被執行后執行 ????????"post-create-project-cmd":?[ ????????????"yiicomposerInstaller::postCreateProject", ????????????"yiicomposerInstaller::postInstall" ????????] ????},
scripts? 這個屬性是composer.json文件的非必須屬性
22:extra
表示scripts 使用的任意擴展數據
例:
"extra":?{ ????????"yiicomposerInstaller::postCreateProject":?{ ????????????"setPermission":?[ ????????????????{ ????????????????????"runtime":?"0777", ????????????????????"web/assets":?"0777", ????????????????????"yii":?"0755" ????????????????} ????????????] ????????}, ????????"yiicomposerInstaller::postInstall":?{ ????????????"generateCookieValidationKey":?[ ????????????????"config/web.php" ????????????] ????????} ????},
extra這個屬性是composer.json文件的非必須屬性