使用 composer show --tree 可递归展示依赖树,推荐结合 --no-dev、--max-depth=N、grep 和 --format=json 等参数控制范围、限制深度、精准搜索及结构化输出,提升可读性与分析效率。

使用 composer show --tree 可以递归列出当前项目的完整依赖关系树,但默认输出可能层级过深或信息冗余。要让依赖树更清晰,关键在于控制显示范围、过滤无关项,并配合其他参数提升可读性。
只显示直接依赖及其子树
默认会从所有已安装包展开,容易淹没重点。建议先聚焦项目直接声明的依赖:
- 运行
composer show --tree your-vendor/package-name(如laravel/framework),只查看某个核心包的依赖路径 - 或用
composer show --tree --no-dev排除开发依赖,减少干扰分支
限制树的深度避免无限展开
某些包(如 symfony/console)依赖链极长,导致输出几百行。可用 --max-depth 控制层级:
-
composer show --tree --max-depth=2 laravel/framework:仅显示 Laravel 及其一级、二级依赖 - 数值设为 1 时只看直接依赖;设为 3 可兼顾深度与简洁性
结合 grep 精准定位关键包
当需要确认某组件是否被引入、或排查冲突时,终端搜索比人工扫屏高效:
-
composer show --tree | grep -A 5 -B 2 "monolog":查 monolog 及其上下文依赖路径 -
composer show --tree | grep "^\w" | sort -u:提取所有顶层包名去重,快速掌握主干依赖
用 --format=json 获取结构化数据
若需进一步分析(比如统计重复版本、生成可视化图),JSON 输出更可靠:
-
composer show --tree --format=json symfony/http-kernel返回标准 JSON,方便脚本解析 - 配合
jq工具可筛选字段,例如:composer show --tree --format=json | jq '.[].requires | keys[]'










