在 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()。常用于指定部署路径、配置插件行为、标记项目类型或传递构建参数,只要避免键名冲突,可自由组织结构,便于维护。
键值对
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)中使用,也可以通过 ComposerScriptEvent 对象访问:
public static function myScript(ComposerScriptEvent $event) { $composer = $event->getComposer(); $extra = $composer->getPackage()->getExtra(); if (isset($extra['my-custom-setting'])) { // 使用你的自定义配置 echo $extra['my-custom-setting']; } }
用途示例
这种机制常用于:
- 指定部署时需要复制的目录或文件
- 配置插件行为(如生成文档的路径)
- 标记项目类型(如是否为微服务、前端项目等)
- 传递环境相关参数给构建脚本
基本上就这些。只要不与已知插件使用的键冲突,你可以自由命名和组织 extra 中的内容。注意保持结构清晰,便于维护。
以上就是如何在composer.json的”extra”字段中存储自定义配置?的详细内容,更多请关注php中文网其它相关文章!


