composer.json
记录了项目中依赖库的关系、版本信息、其他数据等。
基础属性
{
"name": "phpoffice/phpspreadsheet",
"description": "Read, Create and Write Spreadsheet documents in PHP",
"keywords": ["PHP", "OpenXML", "Excel", "xlsx", "xls"],
"type": "library",
"license": "MIT",
"authors": [
{
"name": "Maarten Balliauw",
"homepage": "https://blog.maartenballiauw.be"
}
]
}
name
, 包名,包括作者名称和项目名称,以/
分割;包名称可以包含任何字符,包括空格,并且不区分大小写。为了简化安装,建议定义一个不包含非字母数字字符或空格的短名称;
description
,项目描述;
keywords
, 关键词,用于搜索与筛选;
type
,包的类型,默认为library
, 原生支持以下 4 种类型:
- library: 默认类型,它只需要将文件复制到 vendor 目录。
- project: 当前包是一个项目,而不是一个库。
- metapackage: 包含需求并将触发其安装的空包,但不包含文件,并且不会向系统写入任何内容。因此这种安装类型并不需要一个 dist 或 source。
- composer-plugin: 一个安装类型为 composer-plugin 的包,它有一个自定义安装类型,可以为其它包提供一个 installler。
只有在安装过程中需要自定义逻辑时才使用自定义类型。建议省略该字段并将其默认为库 library
。
license
,包的许可证,对于开源项目通常需要一个开源许可证,开源项目许可协议参考 SPDX License List 。
authors
,包作者,包括name
email
homepage
role
属性。
依赖项
{
"require": {
"php": "^7.2",
"markbaker/complex": "^1.4",
"markbaker/matrix": "^1.2",
"psr/simple-cache": "^1.0"
},
"require-dev": {
"dompdf/dompdf": "^0.8.5",
"friendsofphp/php-cs-fixer": "^2.16",
"jpgraph/jpgraph": "^4.0",
"mpdf/mpdf": "^8.0",
"phpcompatibility/php-compatibility": "^9.3",
"phpunit/phpunit": "^8.5",
"squizlabs/php_codesniffer": "^3.5",
"tecnickcom/tcpdf": "^6.3"
}
}
require
, 必须安装的依赖包列表,这些包必须满足条件,否则不会安装。
require-dev
,开发或运行测试时的依赖包列表。
自动加载映射
{
"autoload": {
"psr-4": {
"PhpOffice\\PhpSpreadsheet\\": "src/PhpSpreadsheet"
}
},
"autoload-dev": {
"psr-4": {
"PhpOffice\\PhpSpreadsheetTests\\": "tests/PhpSpreadsheetTests"
}
}
}
autoload
支持 PSR-4 和 PSR-0 规范的自动加载,以及classmap
的创建和files
的引用,推荐使用 PSR-4
规范。
autoload-dev
开发或运行测试时的自动加载规则。
脚本
Composer
允许在安装过程的各个部分中执行脚本,也可以自定义脚本。脚本可以是PHP回调(定义为静态方法),也可以是任何命令行可执行命令,参考Scripts。
{
"scripts": {
"test": "phpunit",
"fix": [
"php-cs-fixer fix --ansi"
]
}
}
例如执行自定义脚本:
composer test
等同于直接执行phpunit
命令。
以上只是介绍了composer.json
的主要属性,更详细的介绍可以参考官方文档。