最准、最省事的方式是执行 composer show -i vendor/package-name --path,它直接输出已安装包的绝对路径,无需猜测 vendor 目录位置;需 composer 2.2+ 支持 --path 参数,且必须在项目根目录运行。

直接用 composer show -i vendor/package-name --path,这是最准、最省事的方式。 它不依赖你猜 vendor 目录在哪,也不需要手动拼路径,输出就是绝对路径,拿来就能 cd 或调试。
为什么 composer show 不加参数不行
执行 composer show monolog/monolog 只显示包描述、依赖和版本,路径字段为空;加 -i(即 --installed)才过滤出已安装的包,但依然没路径——很多人卡在这一步,反复进 vendor/ 目录里翻找。必须显式带上 --path(Composer 2.2+ 才支持),否则命令不会输出路径。
- 漏掉
--path:输出里没有路径,只有版本和描述 - 包名写错(大小写敏感、少斜杠):报错
Package not found - 在非项目根目录下运行:提示
No composer.json found,命令失效
composer config vendor-dir --absolute 是查 vendor 根目录的真命天子
你真正要定位某个包,得先知道 vendor/ 在哪。硬写死 ./vendor 很危险:项目可能通过 "config": {"vendor-dir": "libs"} 改了位置,CI/CD 或 Docker 里更常见。所以别猜,用命令问 Composer 自己:
工作流任务拆解与模型编排技能。使用场景:(1) 收到复杂工作任务需要拆解为可执行步骤,(2) 需要为不同步骤选择最合适的模型,(3) 需要跟踪工作流进度和模型使用情况,(4) 长时间任务卡住需要问题诊断和解决方案。
-
composer config vendor-dir --absolute:返回真实 vendor 绝对路径(仅 Composer 2.2+) - 旧版 Composer(composer config vendor-dir,没输出就默认是
vendor/;再用pwd拼出绝对路径 - 插件干扰时(如旧版
hirak/prestissimo):加--no-plugins测试,比如composer config vendor-dir --absolute --no-plugins
全局安装的包路径不能套用 show -i --path
composer show -i 只查当前项目的已安装包,对 composer global require 装的东西完全无效。全局包得走另一套逻辑:
- 代码位置:
composer config --global home输出路径,其下的vendor/就是源码目录(如/home/alice/.composer/vendor/laravel/installer) - 可执行文件位置:
composer global config bin-dir --absolute,输出的是laravel、phpunit这类命令实际所在目录 - 别去翻
which composer的路径——那是 Composer 自身二进制的位置,跟全局包无关
路径本身不难查,难的是分清“项目内包”和“全局包”、“代码路径”和“命令路径”。尤其当 vendor-dir 被改过,或用了 composer/installers,手拼路径十有八九会错。信 show -i --path 和 config --absolute,它们读的是 Composer 实际加载的元数据,不是配置文件里的静态字符串。










