直接运行composer show列出所有已安装的顶层包(require和require-dev声明的),但不展开间接依赖;查全量依赖树用composer show --tree,确认包是否真装入vendor/则执行composer show vendor/package-name。

直接运行 composer show 就能列出当前项目中所有已安装的包及其版本,但它默认只显示你手动写在 composer.json 里的顶层依赖(require 和 require-dev),不展开间接依赖。想看全量、查特定包、导出清单,得加参数或换命令。
怎么确认某个包是否真装进了 vendor/?
别靠 ls vendor/ 猜,也别信 composer.json 里写了就等于装了——最准的方式是直接查:
-
composer show vendor/package-name:如果返回版本号(比如v3.5.0或dev-main),说明已安装;报Package not found就是真的没进vendor/ - 包名大小写敏感:
symfony/console和Symfony/Console是两个不同包,输错必报错 - 刚改完
composer.json但没跑composer install或composer update?show显示的仍是旧版本,不是缓存问题,是根本没重装 - 用过
composer install --no-dev?那phpunit/phpunit这类开发依赖就不会出现在结果里,哪怕它还在composer.json中
怎么查完整依赖树,搞清谁拉了谁?
默认 composer show 只列顶层,看不出 psr/log 是被 symfony/console 还是 monolog/monolog 拉进来的。必须用 --tree:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
-
composer show --tree:输出缩进结构,清晰展示嵌套关系,例如:laravel/framework v10.48.12<br>└── symfony/console v6.4.7<br> └── psr/log ^3.0
- 它读的是
composer.lock解析出的实际安装路径,不是扫描vendor/目录,所以速度快、结果稳 - 终端宽度不够导致包名被截断?加
| less -S或重定向到文件:composer show --tree > deps.tree - 想快速定位某包?配合
grep:composer show --tree | grep "guzzlehttp"(注意斜杠可能需引号包裹)
怎么过滤出只看自己手动 require 的包?
开发中常要区分“我主动选的”和“被连带装的”。用 --direct 最干净:
-
composer show --direct:只列composer.json中require和require-dev字段里明确写的包,跳过所有传递依赖 - 导出纯文本供 CI 或审计用:
composer show --direct --format=plain,一行一个vendor/name version - 如果只想导出包名(不要版本):
composer show --direct --format=plain | awk '{print $1}' - 注意:
--direct不受--no-dev影响——只要composer.json里写了,就出现在结果里;但实际是否装进vendor/,还得看上次 install 有没有加--no-dev
怎么查远程所有可用版本(含预发布)?
composer show vendor/package 默认只显示本地已知版本(缓存中装过或见过的),不是 Packagist 全量列表。要查全部,必须加 -a:
-
composer show -a vendor/package:直连 Packagist API,返回所有 tagged release(如v3.5.0)、预发布(v2.10.0-RC1)、活跃分支(dev-main) - 私有包查不到?先确认
composer.json中repositories配置生效,token 有效;国内用户若超时,可临时切回官方源:composer config -g repo.packagist composer https://packagist.org - 有时查不到最新 tag?先清缓存:
composer clear-cache,再跑show -a - 过滤特定主版本?靠外部工具:
composer show -a vendor/package | grep "v2\."(Linux/macOS)或composer show -a vendor/package | findstr "v2\."(Windows)
最容易被忽略的一点:所有 composer show 命令都强依赖 vendor/composer/installed.json。这个文件不存在(比如刚克隆项目还没 composer install),命令就会失败或静默退出——它不会退回到 composer.lock 或尝试重装,前提条件不满足,一切操作都无效。










