最可靠的方式是直接进入 vendor 目录查看源码,因为 Composer 安装的包源码默认完整存于 vendor/ 下,无需解压或反编译;可通过 ls vendor/、IDE 展开或 composer show 确认路径与类型(git 克隆、zip 解压或 path 符号链接)。

直接进 vendor 目录是最可靠的方式
Composer 安装的包源码默认就放在项目根目录下的 vendor 文件夹里,没有额外解压或编译步骤。只要包安装成功,它的全部源文件(包括 src、tests、composer.json 等)都原样存在。不需要“反编译”或“查看源码包”,它本来就是源码。
常见误区是以为要通过命令“打开”或“导出”源码——其实只是路径没找对。建议用终端直接 ls vendor/ 或在 IDE 里展开 vendor,按命名空间或包名(如 monolog/monolog、symfony/http-foundation)定位子目录。
composer show 能快速确认包路径和版本
运行 composer show vendor/package-name 不仅显示版本、依赖和描述,还会输出 source 字段(如果包配置了 source 类型)和 dist 信息,但最关键的是它会告诉你这个包是否已安装、是否被锁定,以及是否用了 path 类型本地仓库——这直接影响你在 vendor 里看到的是 symlink 还是真实文件夹。
- 若显示
source: type: git,说明包来自 Git 仓库,vendor里是完整克隆(含.git),可直接git log查看提交历史 - 若显示
dist: type: zip,则vendor中是解压后的纯代码,无版本控制信息 - 若包被
pathrepo 替换,vendor里会是符号链接,点进去就是你本地的开发目录
别被 autoload 配置误导:源码位置 ≠ 自动加载路径
很多人查 composer.json 里的 autoload(比如 "psr-4": {"App\": "app/"})误以为包源码也得符合这个结构。其实那是“告诉 Composer 哪些 PHP 文件该被自动加载”,和“包实际放在哪”是两回事。一个包的源码可能在 vendor/foo/bar/src/,但它通过 autoload.psr-4 声明了 "Foo\Bar\": "src/",所以你 use Foo\Bar\ClassA 就能加载 vendor/foo/bar/src/ClassA.php。
想确认某个类对应哪个文件?用 IDE 的 “Go to Definition” 最快;或者手动查该包的 composer.json 里的 autoload 段,再结合它在 vendor 中的实际目录结构推断。
注意 symlink 和 Windows 权限问题
在 Linux/macOS 上,如果包是 path 类型或启用了 composer config --global store-auths false 等特殊配置,vendor 下可能出现软链接。这时候直接 ls -l vendor/foo/bar 可以看到指向哪里。Windows 用户如果发现点不开目录或报“找不到路径”,先检查是否启用了开发者模式(否则 symlink 创建失败),或执行 composer install --no-plugins 避免某些插件干扰符号链接生成。
另外,有些包(尤其是 Laravel 的官方包)会在 vendor 里带 stub 或 resources 目录,这些不是运行时必需的,但调试命令行工具或发布资源时会用到——别删,也别假设它们没用。










