用 composer show --tree -s | less -R 可清晰查看依赖树,-s 压缩显示包名与版本,less 支持翻页和搜索;反向依赖需用 composer depends --tree 包名;autoload 未生效或需 dump-autoload;多版本共存需检查实际安装与类加载覆盖。
composer
show --tree 看不清依赖层级?用这个参数组合
默认
输出太宽,终端一屏刷满,根本分不清谁依赖谁。核心问题不是命令不存在,而是输出没做截断和缩进控制。
加
(short)参数能压缩显示,只保留包名+版本,跳过描述,大幅提升可读性:
配合
分页查看更稳妥:
,支持上下翻、搜索
如果项目用了大量 dev 依赖,
会把测试工具链也拉进来,干扰主干依赖判断;非必要不加
为什么 vendor/autoload.php 里找不到某个类,但 composer show 显示已安装?
这通常不是依赖没装,而是 autoloading 配置没生效——Composer 只负责加载,不保证自动注册所有命名空间。
检查该包的
是否声明了
(如
或
),没声明就无法被自动加载
运行
强制重生成 autoload 文件,尤其在手动改过
后容易漏掉这步
某些包(比如纯脚本工具)只提供 bin 命令,不提供类加载,
能查到,但代码里
不了
composer depends 查不到反向依赖?注意作用域限制
默认只查当前项目直接 require 的包,不会穿透到子依赖的子依赖。想查“谁让 monolog/monolog 进来的”,得明确指定范围。
Composer 2.9.6
Composer 2.9.6 是 PHP 生态中高效、稳定的依赖管理工具。此版本在性能与兼容性上进一步优化,改进了依赖解析算法,提升大型项目中的安装与更新速度。它支持并行下载任务,显著减少等待时间,并增强了与私有仓库及镜像源的交互稳定性。同时修复了多项命令行交互与内存使用相关的缺陷,确保在复杂依赖关系下依然可靠运行。无论是新项目初始化还是现有系统维护,Composer 2.9.6 都能为开发者提供流畅、精准的依赖管理体验。
下载
查直接依赖:
查全部路径(含间接依赖):
如果返回空,先确认包名拼写是否完全匹配(包括大小写),
列出的才是真实名称
私有包或 path repository 里的依赖,
可能无法解析 autoload 信息,得结合
手动追踪
依赖树里出现同一包多个版本?别急着删,先看是否真冲突
Composer 允许同一包不同版本共存(通过不同的 autoload namespace 或 classmap 路径),但实际运行时可能因类加载顺序出问题。
用
快速定位所有出现位置,注意版本号和父依赖链
如果两个版本被不同分支 require,且没有版本约束冲突,Composer 会选一个满足所有条件的版本合并安装——此时树里显示多版本只是“曾考虑过”,最终只装一个
真正危险的是
或
报错后发现是低版本类被高版本 autoload 覆盖了,这时得用
强制对齐
依赖树不是静态快照,它随
修改、
命令执行、甚至平台配置(PHP 版本、扩展)实时变化。每次怀疑依赖关系异常,优先重跑
看计划变更,比盯着树状图猜更可靠。
composer show --tree-scomposer show --tree -slesscomposer show --tree -s | less -R/monolog--devcomposer.json"autoload""psr-4""classmap"composer dump-autoloadcomposer.jsoncomposer shownewcomposer dependscomposer depends monolog/monologcomposer depends --tree monolog/monologcomposer showdependscomposer.lockcomposer show -t | grep "package-name"class not foundmethod not existscomposer require --update-with-dependenciescomposer.jsonrequirecomposer update --dry-run