在目前主流的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": { "huaweichenai\\discern\\": "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": [ "yii\\composer\\Installer::postInstall" ], //当 create-project 命令被执行后执行 "post-create-project-cmd": [ "yii\\composer\\Installer::postCreateProject", "yii\\composer\\Installer::postInstall" ] },
scripts 这个属性是composer.json文件的非必须属性
22:extra
表示scripts 使用的任意扩展数据
例:
"extra": { "yii\\composer\\Installer::postCreateProject": { "setPermission": [ { "runtime": "0777", "web/assets": "0777", "yii": "0755" } ] }, "yii\\composer\\Installer::postInstall": { "generateCookieValidationKey": [ "config/web.php" ] } },
extra这个属性是composer.json文件的非必须属性
以上是composer.json文件詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!