Коли-небудь замислювалися, які з опублікованих конфігураційних файлів Laravel ви справді змінювали? Після років розробки в папці з опублікованими vendor-файлами накопичується сміття — деякі файли змінені, багато залишилися незайманими, а частина — від пакетів, які давно видалили. Це ускладнює навігацію по кодовій базі й заплутує при оновленнях пакетів.
Laravel Vendor Cleanup від Chris Jones додає Artisan-команди, які інтелектуально порівнюють ваші опубліковані vendor-файли з оригіналами. Вони прибирають коментарі, за потреби нормалізують пропуски, а потім використовують SHA256-хешування, щоб точно показати, які файли ви змінювали (з кольоровими відсотками diff), які ідентичні з vendor (безпечно видаляти) і які залишилися сиротами від видалених пакетів.
Прибирайте зайве, відстежуйте свої кастомізації й оновлюйте пакети з упевненістю — усе через прості artisan-команди.
Функції
- Розумне порівняння: Автоматично прибирає PHP-коментарі та за бажання нормалізує пробіли
- Відсотки відмінностей: Точно бачите, наскільки ваші файли відрізняються від оригіналів vendor
- Кольоровий вивід: Green 🟢, Yellow 🟡, Magenta 🟣 або Red 🔴 залежно від відсотка відмінності
- Безпечне очищення: Можливість опційно видаляти незмінені файли з підтвердженням
- Виявлення сиріт: Знаходить файли від неінстальованих/видалених пакетів
- Обробка міток часу: Розумне співставлення імен міграцій (прибирає timestamps)
- Підтримка stub: Виявляє як
.php, так і.php.stubvendor-файли
Доступні команди
Команди, доступні на момент написання:
php artisan vendor-cleanup:config
php artisan vendor-cleanup:migration
php artisan vendor-cleanup:lang
php artisan vendor-cleanup:view
Приклад
Приклад виводу команди vendor-cleanup:config:
$ php artisan vendor-cleanup:config
MODIFIED
+---------------------+------------+
| File | Difference |
+---------------------+------------+
| config/services.php | 25.7% |
| config/app.php | 22% |
| config/mail.php | 4.7% |
| config/cache.php | 3% |
| config/queue.php | 1.7% |
| config/database.php | 0.8% |
| config/session.php | 0.4% |
| config/apiroute.php | 0.1% |
+---------------------+------------+
UNCHANGED (matches vendor)
+--------------------+------------------------+
| File | File |
+--------------------+------------------------+
| config/auth.php | config/filesystems.php |
| config/logging.php | |
+--------------------+------------------------+
MISSING (not published locally)
+-------------------------------------------------------------------+--------------------------------------------+
| File | File |
+-------------------------------------------------------------------+--------------------------------------------+
| laravel/boost/config/boost.php | laravel/framework/config/broadcasting.php |
| laravel/framework/config/concurrency.php | laravel/framework/config/cors.php |
| laravel/framework/config/hashing.php | laravel/framework/config/view.php |
| laravel/mcp/config/mcp.php | laravel/tinker/config/tinker.php |
| mrpunyapal/laravel-extended-commands/config/extended-commands.php | spatie/laravel-data/config/data.php |
| spatie/php-structure-discoverer/config/structure-discoverer.php | symfony/http-kernel/config/FileLocator.php |
+-------------------------------------------------------------------+--------------------------------------------+
Done.
Спробуйте цей пакет у наявному проєкті й подивіться, що він знайде. Дізнайтеся більше та перегляньте вихідний код на GitHub.