您现在的位置是:网站首页>>其他>>Composer

composer.json文件详解

发布时间:2019-01-11 15:57:09作者:wangjian浏览量:949点赞量:0

    在当前主流的PHP框架中我们都会发现一个名为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文件的非必须属性

0 +1