在 composer.json 的 extra 字段中存储自定义配置是常见做法,可用于传递项目元信息或供插件、脚本使用。例如可定义字符串、布尔值、数组和嵌套对象:{ "extra": { "my-custom-setting": "value1", "paths": ["src/", "config/"] } }。PHP 中可通过读取并解析 composer.json 获取这些值:$composer = json_decode(file_get_contents(__DIR__ . '/composer.json'), true); $extra = $composer['extra'] ?? []; 也可在 Composer 脚本中通过 Event 对象访问:$event->getComposer()->getPackage()->getExtra()。常用于指定部署路径、配置插件行为、标记项目类型或传递构建参数,只要避免键名冲突,可自由组织结构,便于维护。

在 composer.json 的 extra 字段中存储自定义配置是一种常见做法,用于传递项目特定的元信息或供 Composer 插件、脚本使用的数据。Composer 本身不会处理这些数据,但你可以通过 PHP 代码在安装后读取它们。
直接在 extra 中添加键值对
extra 字段允许你自由定义键和值。你可以将自定义配置以 JSON 兼容格式写入:
{
"name": "your-vendor/your-project",
"extra": {
"my-custom-setting": "value1",
"another-option": true,
"paths": [
"src/",
"config/"
],
"environment": {
"dev": {
"debug": true
},
"prod": {
"debug": false
}
}
}
}
上面的例子展示了字符串、布尔值、数组和嵌套对象等多种类型的配置。
从 PHP 代码中读取 extra 配置
在你的应用或脚本中,可以通过加载 composer.json 文件并解析 extra 字段来获取这些值:
$composer = json_decode(file_get_contents(__DIR__ . '/composer.json'), true); $extra = $composer['extra'] ?? []; $setting = $extra['my-custom-setting'] ?? null; $paths = $extra['paths'] ?? [];
如果你是在 Composer 脚本(如 post-install-cmd)中使用,也可以通过 Composer\Script\Event 对象访问:
public static function myScript(\Composer\Script\Event $event)
{
$composer = $event->getComposer();
$extra = $composer->getPackage()->getExtra();
if (isset($extra['my-custom-setting'])) {
// 使用你的自定义配置
echo $extra['my-custom-setting'];
}
}
用途示例
这种机制常用于:
- 指定部署时需要复制的目录或文件
- 配置插件行为(如生成文档的路径)
- 标记项目类型(如是否为微服务、前端项目等)
- 传递环境相关参数给构建脚本
基本上就这些。只要不与已知插件使用的键冲突,你可以自由命名和组织 extra 中的内容。注意保持结构清晰,便于维护。










