在 composer.json 中通过 extra 字段定义自定义参数,如 my-script-param、enable-feature 和 paths;2. 脚本中通过 Event 对象获取 extra 数据并读取配置;3. 支持嵌套结构,需做类型检查确保安全;4. 常用于传递路径、开关功能或环境配置,实现灵活的脚本行为控制。

在 Composer 中,extra 字段允许你在 composer.json 中定义自定义配置,这些配置可以被脚本或其他 Composer 插件读取。如果你想将参数传递给自定义脚本(例如通过 scripts 定义的脚本),使用 extra 是一种标准做法。
你可以在 composer.json 的根级别添加 extra 字段,并在里面设置你需要传递给脚本的数据:
{
"name": "your/project",
"extra": {
"my-script-param": "value1",
"enable-feature": true,
"paths": [
"src/",
"tests/"
]
},
"scripts": {
"post-install-cmd": "MyScript::run"
}
}
如果你使用的是静态方法作为脚本处理程序(如 MyScript::run),Composer 会自动将 Composer\Script\Event 对象传入。你可以从中获取 extra 配置:
class MyScript
{
public static function run(\Composer\Script\Event $event)
{
$extra = $event->getComposer()->getPackage()->getExtra();
$param = $extra['my-script-param'] ?? 'default';
$enable = $extra['enable-feature'] ?? false;
$paths = $extra['paths'] ?? [];
echo "Param: $param\n";
if ($enable) {
echo "Feature is enabled.\n";
}
foreach ($paths as $path) {
echo "Processing path: $path\n";
}
}
}
extra 字段支持任意结构,包括嵌套数组。建议在访问前做类型检查,避免运行时错误:
$extra = $event->getComposer()->getPackage()->getExtra();
if (isset($extra['my-config']) && is_array($extra['my-config'])) {
// 安全处理嵌套配置
}
常见用途包括:
基本上就这些。通过 extra 字段,你可以灵活地将项目特定参数传递给 Composer 脚本,而无需硬编码或依赖外部文件。只要脚本接收 Event 对象并从中提取 extra 数据即可。不复杂但容易忽略细节,比如键是否存在、类型是否正确。
以上就是Composer如何配置extra字段传递参数给脚本的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号