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文件有所帮助。