新建Laravel项目vendor文件夹占用2.09GB磁盘空间问题求助
Laravel项目vendor文件夹过大(2.09GB)的排查与解决方法
问题诊断
全新Laravel 10项目的vendor文件夹正常大小约300-500MB,2.09GB的体积明显异常,大概率由以下原因导致:
- 下载了包含
.git、测试文件、文档的源代码包(source)而非压缩包(dist) - 存在冗余依赖或大体积第三方包
- Composer缓存异常
解决步骤
1. 定位大体积包
先找出vendor内占用空间最多的文件夹,针对性处理:
# Linux/macOS du -h --max-depth=1 vendor/ | sort -hr # Windows 可使用TreeSize Free等可视化工具扫描
2. 强制使用压缩包安装并清理缓存
执行以下命令,清除Composer缓存后,强制用dist压缩包安装(排除dev依赖可进一步减小体积):
# 清除全局缓存 composer clear-cache # 仅安装生产依赖(推荐生产环境使用) composer install --no-dev --prefer-dist # 若需要保留dev依赖 composer install --prefer-dist
3. 检查全局Composer配置
确认全局配置未覆盖项目的preferred-install设置:
# 查看全局偏好设置 composer config --global preferred-install # 若输出为source,改为dist composer config --global preferred-install dist
4. 清理vendor内的冗余文件
使用第三方插件删除包内的测试文件、文档、.git目录等冗余内容:
# 安装清理插件(仅开发环境) composer require --dev barryvdh/composer-cleaner # 执行清理 composer cleaner
5. 排查异常依赖
如果定位到某个特定包体积异常,可查看该包的Composer配置,确认是否包含不必要的文件,或更换为更轻量化的替代包。
附用户提供的composer.json:
{ "name": "laravel/laravel", "type": "project", "description": "The skeleton application for the Laravel framework.", "keywords": ["laravel", "framework"], "license": "MIT", "require": { "php": "^8.1", "guzzlehttp/guzzle": "^7.2", "laravel/framework": "^10.10", "laravel/sanctum": "^3.3", "laravel/tinker": "^2.8" }, "require-dev": { "fakerphp/faker": "^1.9.1", "laravel/pint": "^1.0", "laravel/sail": "^1.18", "mockery/mockery": "^1.4.4", "nunomaduro/collision": "^7.0", "phpunit/phpunit": "^10.1", "spatie/laravel-ignition": "^2.0" }, "autoload": { "psr-4": { "App\\": "app/", "Database\\Factories\\": "database/factories/", "Database\\Seeders\\": "database/seeders/" } }, "autoload-dev": { "psr-4": { "Tests\\": "tests/" } }, "scripts": { "post-autoload-dump": [ "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump", "@php artisan package:discover --ansi" ], "post-update-cmd": [ "@php artisan vendor:publish --tag=laravel-assets --ansi --force" ], "post-root-package-install": [ "@php -r \"file_exists('.env') || copy('.env.example', '.env');\"" ], "post-create-project-cmd": [ "@php artisan key:generate --ansi" ] }, "extra": { "laravel": { "dont-discover": [] } }, "config": { "optimize-autoloader": true, "preferred-install": "dist", "sort-packages": true, "allow-plugins": { "pestphp/pest-plugin": true, "php-http/discovery": true } }, "minimum-stability": "stable", "prefer-stable": true }
内容的提问来源于stack exchange,提问作者Gourav Joshi
相关产品推荐
相关产品推荐

