最准、最省事的方式是执行 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 自己:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
-
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 实际加载的元数据,不是配置文件里的静态字符串。

















