pre-dependencies-solving事件在composer 2.1中引入,于依赖解析前触发,允许动态修改依赖列表、调整环境相关配置或为插件注入虚拟包;它发生在锁文件生成和包下载之前,是影响依赖决策的最后时机,常用于高级工具或企业工作流中。
事件是在依赖解析过程开始之前触发的,它允许你在真正计算包版本冲突和兼容性之前执行一些自定义逻辑。这个事件从 Composer 2.1 版本开始引入,主要用于插件或项目级脚本在依赖决策前进行干预或调整。
控制依赖解析前的行为
在这个事件触发时,Composer 已经读取了当前项目的 composer.json 和已安装的锁定文件(如存在),但还没有开始计算需要安装或更新哪些包。你可以利用这个时机:
- 动态修改请求安装的依赖列表
- 根据环境条件启用或禁用某些依赖项
- 为后续解析阶段准备上下文信息
用于插件扩展场景
如果你开发的是 Composer 插件,可以在监听 pre-dependencies-solving 时:
- 检查用户配置是否影响依赖选择
- 注入虚拟包或替换某些包的版本约束
- 记录调试信息,比如“即将解析依赖…”日志
实际用途示例
比如你想在 CI 环境中临时替换某个开发依赖为特定分支:
监听该事件,检测环境变量,然后修改依赖约束。
或者你有一个私有镜像代理服务,可以在此阶段动态设置仓库源优先级。
基本上就这些。这个事件不常被普通用户直接使用,更多是给高级工具或企业级工作流提供灵活性。关键点在于:它发生在“锁文件生成”和“下载包”之前,是最后一个能影响依赖决策的机会。


