如何通过Composer why-not工具排查并解决版本冲突问题?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1031个文字,预计阅读时间需要5分钟。
composer why-not是定位依赖冲突的最快入口,不是看看谁不支持,而是谁在阻止我装这个版本。它输出的每一行都指向真实阻断点,跳过它等于在迷雾中修路。
为什么 composer why-not 比报错日志更准
Composer 报错通常只说 Found package x but it does not match your constraint,但不告诉你谁在拉住它。composer why-not 会顺着依赖图反向追踪,直到找到第一个声明冲突的包。例如:
composer why-not laravel/framework:^10.0
可能输出:
spatie/laravel-backup 7.0.0 requires illuminate/support (^9.0) ├── laravel/framework (dev-master) requires illuminate/support (^9.0) └── your-project requires laravel/framework (^10.0)
关键信息在 requires illuminate/support (^9.0) 这一行——不是 laravel/framework 本身卡住,而是它的下游依赖 spatie/laravel-backup 还没适配 illuminate/support 10.x。
本文共计1031个文字,预计阅读时间需要5分钟。
composer why-not是定位依赖冲突的最快入口,不是看看谁不支持,而是谁在阻止我装这个版本。它输出的每一行都指向真实阻断点,跳过它等于在迷雾中修路。
为什么 composer why-not 比报错日志更准
Composer 报错通常只说 Found package x but it does not match your constraint,但不告诉你谁在拉住它。composer why-not 会顺着依赖图反向追踪,直到找到第一个声明冲突的包。例如:
composer why-not laravel/framework:^10.0
可能输出:
spatie/laravel-backup 7.0.0 requires illuminate/support (^9.0) ├── laravel/framework (dev-master) requires illuminate/support (^9.0) └── your-project requires laravel/framework (^10.0)
关键信息在 requires illuminate/support (^9.0) 这一行——不是 laravel/framework 本身卡住,而是它的下游依赖 spatie/laravel-backup 还没适配 illuminate/support 10.x。

