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.
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
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" } ],
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" },
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": "*" },
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" } }
表示自动加载当前的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文件的非必须属性
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!