首頁 >開發工具 >composer >composer.json文件詳解

composer.json文件詳解

藏色散人
藏色散人轉載
2019-08-03 17:11:5713048瀏覽

在目前主流的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": {
            "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中文網其他相關文章!

陳述:
本文轉載於:wj0511。如有侵權,請聯絡admin@php.cn刪除