解析composer.json中所有属性字段

1. composer.json文件概述

composer.json是一个php项目最基本的配置文件,我们可以通过composer.json文件来定义项目的基本信息、依赖包、脚本等配置信息。它基于json格式,包含多个键值对,通过这些定义的键值对来加载项目所依赖的库,并为项目带来更好的管理方式。

2. 属性字段解析

2.1 name

name是composer.json文件的第一个属性字段,它规定了项目的名称。在安装依赖时,composer会默认安装项目名称下的依赖包,它采用“供应商/包”(vendor/package)的格式,我们通常把项目名称定义为username/项目名

"name": "example/project",

2.2 description

description是composer.json的第二个属性字段,它用来描述项目的简介和描述信息,一般会对用户提供项目的详细信息。它可以使用Markdown语法来渲染。

"description": "A simple example project using PHP and Composer."

2.3 type

type是composer.json的第三个属性字段,用于指明项目的类型,这对添加自定义支持很有用。运行composer show --all可以查看Composter支持的项目类型,如:library、project、metapackage等。

"type": "library"

2.4 keywords

keywords是定义项目关键词的属性字段,以便搜索引擎更好地索引项目和相关标签,打标签的格式使用英文逗号分开。

"keywords": ["php", "composer", "example"]

2.5 homepage

该属性定义了项目主页的URL地址。

"homepage": "http://example.com"

2.6 license

该属性用于注册项目所使用的许可证类型,许可证类型可以是标准许可证,也可以是作者自己定义的许可证。许可证类型使用SPDX格式命名,运行composer licenses可以查看支持的许可证类型。

"license": "MIT"

2.7 require

require是composer.json中非常重要的一项属性,它规定了项目所依赖的其他包的版本号信息。版本号可以使用通配符, ~1.0.2:安装1.0.x的最新版本;^1.2.3:安装1.x.x的最新版本。

"require": {

"monolog/monolog": "1.2.*",

"another/package": "^1.2.3"

}

2.8 require-dev

require-dev是定义项目的开发依赖包,它们不会出现在生产环境中,开发环境需要用到它们,如:测试和代码分析工具等。

"require-dev": {

"phpunit/phpunit": "^7.0",

"squizlabs/php_codesniffer": "^3.0"

}

2.9 autoload

autoload定义了如何加载我们的代码文件,其分为两部分:psr-4自动加载和类映射自动加载。

2.9.1 psr-4自动类加载

psr-4指的是规范PSR-4,它规范了如何自动加载类。指定一个命名空间前缀和一个目录,Composer自动扫描目录中符合该命名空间前缀的php文件,自动定义映射关系。此处需要注意的是:命名空间前缀需要与项目的目录结构相对应。

"autoload": {

"psr-4": {

"Example\\": "src/Example/"

}

}

2.9.2 类映射自动加载

类映射自动加载指的是将命名空间映射到具体的文件路径,从而加载对应的类文件。我们可以通过定义classmap来实现。

"autoload": {

"classmap": [

"src/Foo.php",

"src/Bar.php",

"src/Baz.php"

]

}

2.10 autoload-dev

autoload类似,autoload-dev定义了加载开发依赖库的方式,通常用于在开发环境中使用,不会出现在生产环境中。

"autoload-dev": {

"psr-4": {

"Tests\\": "tests/"

}

}

2.11 minimum-stability

minimum-stability表示最小稳定性,定义了可以使用的最低稳定版本。当项目依赖的源码从Github上获取,需要设置该属性为稳定版本。有5种不同的稳定性级别:dev、alpha、beta、rc、stable。

"minimum-stability": "dev"

2.12 prefer-stable

当依赖库有多个稳定版本可供选择的时候,是否选择稳定版本,默认为false,表示还是按照版本的优先级来安装。

"prefer-stable": true

2.13 repositories

repositories定义了解决器可以从哪里下载或发现Composer包。解决器首先寻找包是否已安装,然后在包仓库中寻找该包。repositories一般用于私有源的开发,以便Composer安装可发现的私有包。

"repositories": [

{

"type": "vcs",

"url": "https://github.com/vendor/repo.git"

}

]

3.总结

本文对composer.json文件中各属性字段进行了详细解析,包括文件概述,以及对name、description、type、keywords、homepage、license、require、require-dev、autoload、autoload-dev、minimum-stability、prefer-stable、repositories属性进行了介绍,并且列举了代码示例,希望对大家了解和使用composer.json文件有所帮助。