Команда php artisan dev запускає всі процеси розробки одночасно. Ці процеси включають стандартні команди фреймворку, команди від пакетів постачальників через сервіс-провайдери та команди самого застосунку.
Нові методи для контролю команд
У Laravel 13.30 з'явилися два нові методи для класу DevCommands, які дозволяють відмовитися від команд постачальників і стандартних команд фреймворку:
use Illuminate\Foundation\DevCommands;
DevCommands::withoutVendorCommands();
DevCommands::withoutDefaultCommands();
Це надає повний контроль над тим, що саме запускається, та дозволяє обмежити виконання лише до тих команд, які ви явно визначили:
namespace App\Providers;
use Illuminate\Foundation\DevCommands;
use Illuminate\Support\ServiceProvider;
class AppServiceProvider extends ServiceProvider
{
public function boot(): void
{
DevCommands::withoutVendorCommands();
DevCommands::withoutDefaultCommands();
DevCommands::artisan('serve', 'server');
DevCommands::artisan('queue:work --queue=notifications', 'queue:notifications');
DevCommands::node('dev', 'vite');
}
}
Детальніший контроль через only() та except()
Також можна отримати більш гранульований контроль, використовуючи методи only() та except(). Наприклад, якщо ви не хочете дозволяти жодних команд від постачальників, але бажаєте залишити всі стандартні команди фреймворку, окрім логів:
DevCommands::withoutVendorCommands();
DevCommands::except('logs');
Стандартні команди
Стандартні команди надходять з методу registerDefaults() фреймворку і на момент написання реєструють чотири процеси:
server - запуск сервера розробки
queue - обробка черг
logs - перегляд логів (коли доступна функція pcntl_fork())
vite - запуск збирання фронтенду (коли проєкт має файл package.json)
Перевірка списку команд
Якщо ви хочете побачити, які процеси будуть запущені, можна скористатися командою dev:list:
php artisan dev:list
server php artisan serve .................................. Illuminate\Foundation\Providers\ArtisanServiceProvider@boot
queue php artisan queue:listen --tries=1 --timeout=0 ..... Illuminate\Foundation\Providers\ArtisanServiceProvider@boot
logs php artisan pail --timeout=0 ....................... Illuminate\Foundation\Providers\ArtisanServiceProvider@boot
vite npm run dev ........................................ Illuminate\Foundation\Providers\ArtisanServiceProvider@boot
JSON-формат для автоматизації
Використання прапорця --json надає вивід у форматі JSON, що може бути корисним для агентів та скриптів автоматизації:
php artisan dev:list --json | jq
[
{
"command": "php artisan serve",
"name": "server",
"color": "#93c5fd",
"source": "Illuminate\\Foundation\\Providers\\ArtisanServiceProvider@boot",
"priority": 0
},
{
"command": "php artisan queue:listen --tries=1 --timeout=0",
"name": "queue",
"color": "#c4b5fd",
"source": "Illuminate\\Foundation\\Providers\\ArtisanServiceProvider@boot",
"priority": 0
},
{
"command": "php artisan pail --timeout=0",
"name": "logs",
"color": "#fb7185",
"source": "Illuminate\\Foundation\\Providers\\ArtisanServiceProvider@boot",
"priority": 0
},
{
"command": "npm run dev",
"name": "vite",
"color": "#fdba74",
"source": "Illuminate\\Foundation\\Providers\\ArtisanServiceProvider@boot",
"priority": 0
}
]
Для детальнішої інформації ознайомтеся з документацією Artisan Dev Command. Можливість відмовитися від стандартних команд і команд постачальників була реалізована Джеком Бейліссом у пулреквесті #61344 і входить до складу релізу Laravel 13.30.