composer.json文件詳解

在當前主流的php框架中我們都會發現一個名為composer.json的文件,在下載的composer包中就可以看到composer.json文件,下面由composer使用教程欄目為大家介紹composer.json文件的作用、屬性及各個屬性的作用。

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文件的非必須屬性

以上就是

? 版權聲明
THE END
喜歡就支持一下吧
點贊5 分享