composer show –tree 可直观查看项目依赖树,展示各包层级关系,帮助排查冲突、优化体积、分析第三方包,支持指定包名查看如 composer show –tree guzzlehttp/guzzle,结合 –direct、–dev 等参数可定制输出,常用于依赖审查与更新预演。

使用 composer show –tree 命令可以直观地查看当前项目中所有已安装的依赖包及其层级关系。这个命令以树状结构展示每个包所依赖的其他包,帮助开发者快速理解项目的依赖组成,排查冲突或冗余依赖。
基本用法
在项目根目录下运行以下命令:
composer show –tree
输出结果类似这样:
laravel/framework
├──illuminate/auth
│ ├── illuminate/contracts
│ └── illuminate/support
├──illuminate/database
│ └── illuminate/support
└──symfony/http-kernel
每一级缩进表示依赖的层级,清晰展示哪个包引用了哪些子依赖。
查看特定包的依赖树
如果只想查看某个具体包的依赖情况,可以在命令后指定包名:
composer show –tree vendor/package-name
例如:
composer show –tree guzzlehttp/guzzle
这会显示 Guzzle 及其所有子依赖的结构,便于分析是否引入了不必要的组件。
实用场景与建议
这个命令在以下情况特别有用:
- 排查版本冲突时,看清哪些包引入了不同版本的同一依赖
- 优化项目体积,识别重复或可替换的嵌套依赖
- 学习框架或库的内部结构,了解其模块依赖关系
- 审查第三方包的安全性,查看它依赖了哪些间接包
建议结合 composer update –dry-run 一起使用,在更新前先观察依赖树可能的变化。
其他相关选项
还可以配合其他参数增强可读性:
- –direct:只显示直接依赖的树状结构
- –dev:包含开发环境依赖
- -i 或 –installed:仅列出已安装的包(通常默认)
例如查看生产环境直接依赖的树:
composer show –tree –direct
基本上就这些。掌握 composer show –tree 能让你更清楚项目“到底用了什么”,不复杂但容易忽略。


