Home > Development Tools > composer > Detailed explanation of composer.json file

Detailed explanation of composer.json file

藏色散人
Release: 2019-08-03 17:11:57
forward
13039 people have browsed it

In the current mainstream PHP framework, we will find a file named composer.json. You can see the composer.json file in the downloaded composer package. The following column is composer usage tutorial. We will introduce the function, properties and functions of each property of the composer.json file.

Detailed explanation of composer.json file

Function:

The composer.json file defines the dependencies of your current project, as well as some related information about the dependencies

Common Attribute description:

1: name

represents the name of the package, consisting of the author name and the project name, separated by /

For example:

yiisoft/ yii2-app-basic

The package name can contain any characters, including spaces, and is not case sensitive (yiisoft/yii2-app-basic and Yiisoft/Yii2-app-basic will be considered the same package) . To simplify installation, it is recommended to define a short name that does not contain non-alphanumeric characters or spaces

The name attribute is a required attribute of the composer.json file

2: description

Indicates a short description of the package, usually this is a one-line introduction.

description This attribute is a necessary attribute of the composer.json file

3: version

Indicates the version of the package

The format of the version must follow X.Y.Z or vX.Y.Z, optional suffix -dev, -patch (-p), -alpha (-a), -beta (-b) or -RC, patch, alpha, beta and RC suffix can also be followed by a number

For example:

1.0.0

1.0.0-dev

version This attribute is the composer.json file Non-essential attributes, generally can be omitted

4: type

indicates the type of package, the default is library

Composer natively supports the following 4 types:

library: Default type, it only requires copying files to the vendor directory.

project: The current package is a project, not a library. For example, the type value of the composer.json file in the Yii framework is project

metapackage: An empty package that contains requirements and will trigger its installation, but does not contain files and will not write anything to the system. Therefore this type of installation does not require a dist or source.

composer-plugin: A package with the installation type composer-plugin, which has a custom installation type and can provide an installler for other packages

We can also define a custom type

The type attribute is a non-essential attribute of the composer.json file

5: keywords

Represents a set of package-related keywords used for search and filtering

keywords This attribute is a non-essential attribute of the composer.json file

6: homepage

Represents the URL address of the project website

Homepage This attribute is the composer.json file Non-mandatory attributes

7: readme

represents the absolute path of the README document

The readme attribute is a non-mandatory attribute of the composer.json file

8 : time

indicates the version release time of the package

must be YYYY-MM-DD or YYYY-MM-DD HH:MM:SS format

time This attribute is composer Optional attributes of the .json file

9: license

represents the license of the package, which can be a string or a string array

The most common license The recommended notation is as follows:

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
Copy after login

If you want to know the license related information, you can refer to: https://spdx.org/licenses/

license This attribute is a non-specific property of the composer.json file Required attribute, but it is recommended to provide this information

10: authors

represents the author of the package, which is an object array.

Each author object can contain the following attributes:

name: The name of the author. Usually the real name.

email: The author’s email address.

homepage: URL address of the author’s personal website.

role: The role the author plays in the project (such as developer or translator).

Example:

"authors": [
        {
            "name": "huaweichenai",
            "email": "243681093@qq.com",
            "homepage": "https://www.wj0511.com/",
            "role": "Developer"
        }
    ],
Copy after login

The authors attribute is a non-essential attribute of the composer.json file, but it is recommended to provide this information

11: support

means Get the information object supporting the project.

Object information must include the following attributes:

email: The project supports email addresses.

issues: The URL address of the tracking issue.

forum: Forum URL address.

wiki: Wiki URL address.

irc: IRC chat channel address, as irc://server/channel.

source: URL browsing or download source.

docs: URL of the file.

rss: URL of RSS feed.

Example:

"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"
    },
Copy after login

The support attribute is a non-essential attribute of the composer.json file

12: require

means it is required List of installed dependent packages. These packages must meet the conditions, otherwise they will not be installed.

Example:

"require": {
        "yiisoft/yii2": "*"
    },
Copy after login

requireThis attribute is a non-essential attribute of the composer.json file

13 :require-dev

Indicates the list of dependent packages when developing or running tests

require-dev This attribute is a non-essential attribute of the composer.json file

14: autoload

Indicates PHP auto-loading mapping

Supports PSR-4 and PSR-0 auto-loading, class mapping and files references.

推荐使用 PSR-4 规范(添加类时,无需重新生成自动加载映射)

例:

"autoload": {
        "psr-4": {
            "huaweichenai\\discern\\": "src"
        }
    }
Copy after login

表示自动加载当前的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"
        }
    }
Copy after login

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"
        ]
    },
Copy after login

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"
            ]
        }
    },
Copy after login

extra这个属性是composer.json文件的非必须属性

The above is the detailed content of Detailed explanation of composer.json file. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:wj0511
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template