Скрипти в composer.json - іменовані команди, які запускають через composer run (або коротко composer <назва>), і хуки на події Composer.
"scripts": {
"test": "pest --parallel",
"lint": ["pint --test", "phpstan analyse"],
"dev": [
"Composer\\Config::disableProcessTimeout",
"npx concurrently \"php artisan serve\" \"php artisan queue:listen\" \"npm run dev\""
],
"post-autoload-dump": [
"Illuminate\\Foundation\\ComposerScripts::postAutoloadDump",
"@php artisan package:discover --ansi"
]
}
composer test
composer lint
composer dev
Навіщо:
- Єдині команди для команди й CI. Не треба пам'ятати прапорці кожного інструмента -
composer testоднаковий локально й у пайплайні. - Хуки на події:
post-install-cmd,post-update-cmd,post-autoload-dump,post-create-project-cmd. Laravel черезpost-autoload-dumpвиявляє пакети (package:discover), а черезpost-create-project-cmd- генеруєAPP_KEY.
Що варто знати:
@phpу скрипті використовує той самий PHP, яким запущено Composer;@composer- той самий Composer;@other-script- викликати інший скрипт.- Виконувані файли з
vendor/binдоступні в скриптах без повного шляху. - За замовчуванням скрипт обмежений 300 секундами; для довгих (dev-сервер) -
Composer\Config::disableProcessTimeout. composer install --no-scriptsвимикає хуки - корисно в Docker-збиранні, поки код застосунку ще не скопійовано.
Безпека: скрипти пакетів-залежностей Composer не виконує - лише скрипти кореневого composer.json. Плагіни ж пакетів потребують явного дозволу в allow-plugins.