在當前主流的PHP框架中我們都會發(fā)現(xiàn)一個名為composer.json的文件,在下載的composer包中就可以看到composer.json文件,下面由composer使用教程欄目為大家介紹composer.json文件的作用、屬性及各個屬性的作用。
作用:
composer.json文件定義了您當前項目的依賴項,以及依賴項的一些相關(guān)信息
常見屬性說明:
1:name
表示包的名稱,由作者名稱和項目名稱組成,使用 / 分割
例如:
yiisoft/yii2-app-basic
包名稱可以包含任何字符,包括空格,并且不區(qū)分大小寫 ( yiisoft/yii2-app-basic 和 Yiisoft/Yii2-app-basic 會被認為是同一個包)。為了簡化安裝,建議定義一個不包含非字母數(shù)字字符或空格的短名稱
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 后綴也可以跟一個數(shù)字
例如:
1.0.0
1.0.0-dev
version這個屬性是composer.json 文件的非必須屬性,一般可以省略
4:type
表示包的類型,默認為庫 library
Composer 原生支持以下4種類型:
library: 默認類型,它只需要將文件復制到 vendor 目錄。
project: 當前包是一個項目,而不是一個庫。例如Yii框架中的composer.json文件的type值九尾project
metapackage: 包含需求并將觸發(fā)其安裝的空包,但不包含文件,并且不會向系統(tǒng)寫入任何內(nèi)容。因此這種安裝類型并不需要一個 dist 或 source。
composer-plugin: 一個安裝類型為 composer-plugin 的包,它有一個自定義安裝類型,可以為其它包提供一個 installler
我們也可以定義一個自定義類型
type這個屬性是composer.json文件的非必須屬性
5:keywords
表示一組用于搜索與篩選的與包相關(guān)的關(guān)鍵字
keywords這個屬性是composer.json文件的非必須屬性
6:homepage
表示項目網(wǎng)站的 URL 地址
homepage這個屬性是composer.json文件的非必須屬性
7:readme
表示README 文檔的絕對路徑
readme這個屬性是composer.json文件的非必須屬性
8:time
表示包的版本發(fā)布時間
必須是 YYYY-MM-DD 或者 YYYY-MM-DD HH:MM:SS 格式
time這個屬性是composer.json文件的非必須屬性
9:license
表示包的許可證,可以是一個字符串或者是一個字符串數(shù)組
最常見的許可證推薦表示法如下:
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
你如果想要知道許可證相關(guān)信息可以參考:https://spdx.org/licenses/
license這個屬性是composer.json文件的非必須屬性,但是建議提供此項信息
10:authors
表示包的作者,這是一個對象數(shù)組。
每一個作者對象可以包含以下屬性:
name: 作者的名字。通常是真實姓名。
email: 作者的郵件地址。
homepage: 作者個人網(wǎng)站的 URL 地址。
role: 作者在項目中擔任的角色(如:開發(fā)者或者譯者)。
例:
"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: 網(wǎng)址瀏覽或下載源。
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
表示開發(fā)或運行測試時的依賴包列表
require-dev這個屬性是composer.json文件的非必須屬性
14:autoload
表示PHP 自動加載的映射
支持 PSR-4 和 PSR-0 自動加載,class 映射 和 files 引用。
推薦使用 PSR-4 規(guī)范(添加類時,無需重新生成自動加載映射)
例:
"autoload": { "psr-4": { "huaweichenai\discern\": "src" } }
表示自動加載當前的src目錄
autoload這個屬性是composer.json文件的非必須屬性
15:minimum-stability
這個屬性定義了按穩(wěn)定性過濾包的默認值,默認為stable。所以如果你依賴dev 包,你應該在你的文件中指定。
所有包都將根據(jù)穩(wěn)定性檢出相應的版本,那些低于 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下面的相關(guān)屬性,參考:https://laravel-china.org/docs/composer/2018/06-config/2087
config屬性中有一個常見的屬性
process-timeout:請求過程超時設置
config 這個屬性是composer.json文件的非必須屬性
21:scripts
表示Composer 允許再安裝過程的各個部分中執(zhí)行腳本
script相關(guān)信息參考:https://laravel-china.org/docs/composer/2018/scripts/2095
例:
"scripts": { //當項目里有 composer.lock 文件的情況下調(diào)用 install 命令后執(zhí)行 "post-install-cmd": [ "yii\composer\Installer::postInstall" ], //當 create-project 命令被執(zhí)行后執(zhí)行 "post-create-project-cmd": [ "yii\composer\Installer::postCreateProject", "yii\composer\Installer::postInstall" ] },
scripts 這個屬性是composer.json文件的非必須屬性
22:extra
表示scripts 使用的任意擴展數(shù)據(jù)
例:
"extra": { "yii\composer\Installer::postCreateProject": { "setPermission": [ { "runtime": "0777", "web/assets": "0777", "yii": "0755" } ] }, "yii\composer\Installer::postInstall": { "generateCookieValidationKey": [ "config/web.php" ] } },
extra這個屬性是composer.json文件的非必須屬性