不能。composer show 只显示包名、版本、描述和依赖关系,不包含磁盘占用信息;需用 du 命令手动统计 vendor 下各包体积,如 cd vendor && du -sh */ | sort -hr | head -20。
composer show 能不能直接看到包体积
不能。composer show 只显示包名、版本、描述和依赖关系,不包含磁盘占用信息。它读的是 composer.lock 和 vendor/ 目录元数据,但不会扫描文件系统大小。
用 du 命令手动统计 vendor 下各包体积
最直接有效的方式是结合 du(disk usage)定位大包。注意必须进到 vendor/ 目录下操作,否则路径不准:
cd vendor du -sh */ | sort -hr | head -20
常见要点:
-
-s表示汇总每个目录总大小,-h以 KB/MB/GB 显示,-r是倒序(最大在前) - 部分包含子命名空间(如
symfony/console),会出现在symfony/目录下,所以只看一级目录会漏掉它们;可改用du -sh */* | sort -hr查二级 - 某些包含大量测试或文档(如
phpunit/phpunit),实际运行时并不需要,可考虑用--no-dev安装或后期清理
为什么 vendor/bin 和 vendor/composer 占空间却不属于“包”
vendor/bin 是软链接集合,本身几乎不占空间;真正吃空间的是 vendor/composer/autoload_*.php 和 vendor/composer/installed.json 等缓存文件——它们体积小,但所有包的类映射都集中在这里。真正影响体积的永远是包自身的 src/、tests/、docs/ 和 vendor/ 嵌套依赖(比如一个包自带 node_modules)。