composer.json 是 PHP 项目依赖管理配置文件,定义项目基本信息、依赖和自动加载规则。1. 基础字段包括 name、description、type、license 和 authors,用于声明项目元数据;2. require 指定生产环境依赖,require-dev 声明开发环境依赖,支持版本约束如 ^8.1 表示兼容性更新。
composer
.
js
on 是 Composer 的核心
配置文件
,用于定义 PHP 项目的依赖关系、元信息和自动加载规则。它采用 JSON 格式编写,必须位于项目根目录下。下面详细介绍其常用字段和写法,帮助你正确配置。
1. 基础字段:项目基本信息
每个 composer.
json
至少应包含以下基础信息:
name:项目名称,格式为 vendor/project-name,如description:项目简短描述type:项目类型,默认是,也可能是、等license:开源协议,如、authors:作者列表,支持 name、email、homepage、role
示例:
2. require 和 require-dev:管理依赖
这两个字段定义项目所需的外部包。
require:生产环境必须的依赖require-dev:仅开发时使用,如测试工具、调试器
版本约束写法示例:
常见版本写法:
:兼容更新,等价于 >=1.2.3 且
:允许补丁级更新,>=1.2.3 且
:任意版本(不推荐)
:指定分支(慎用,不稳定)
3. autoload:自动加载配置
Composer 支持 PSR-4 和 PSR-0 自动加载,最常用的是 PSR-4。
PHP 8.5.5
PHP 8.5.5 是 PHP 8.5 分支的维护更新版本。该版本延续了“小步快跑”的迭代逻辑,通过深度错误修复、底层性能微调以及安全加固,旨在为开发者提供一个更健壮、更高效的运行环境。该版本严格遵守语义化版本规范,不包含破坏性变更。
下载
psr-4:命名空间到目录的映射classmap:扫描指定目录生成类映射(兼容旧代码)files:指定需全局包含的 PHP 文件
示例:
配置后运行
生成自动加载文件。
4. scripts:执行自定义脚本
可在安装、更新等生命周期中触发自定义命令。
Composer 支持多种事件,如
、
等。
5. 其他常用配置项
minimum-stability
:最低稳定性,默认
,可设为
、
等
prefer-stable
:true 表示优先选择稳定版本
config
:配置选项,如
可让 require 包按字母排序
repositories
:自定义包源,如私有 Git 或 Satis 源
示例:
基本上就这些。一个完整且规范的 composer.json 能让项目更易维护、协作更顺畅。注意保持格式合法,可用
检查语法。初始化项目时也可用
交互式生成。
myorg/bloglibraryprojectmetapackageMITGPL-2.0+{
"name": "myorg/myapp",
"description": "A simple web application",
"type": "project",
"license": "MIT",
"authors": [
{
"name": "John Doe",
"email": "john@example.com",
"homepage": "https://example.com",
"role": "Developer"
}
]
}
"require": {
"php": "^8.1",
"monolog/monolog": "^2.0"
},
"require-dev": {
"phpunit/phpunit": "^9.5"
}
^1.2.3~1.2.3*dev-main"autoload": {
"psr-4": {
"MyApp\": "src/"
},
"classmap": ["legacy/"],
"files": ["helpers.php"]
}
composer dump-autoload"scripts": {
"post-install-cmd": "echo 'Installation complete.'",
"post-update-cmd": "php generate-config.php"
}
pre-install-cmdpost-autoload-dumpstabledevbeta{"sort-packages": true}"config": {
"sort-packages": true,
"optimize-autoloader": true
},
"minimum-stability": "stable",
"prefer-stable": true
composer validatecomposer init