---
title: "Laravel artisan dev: керування сервером, чергами, логами та Vite"
url: https://laravelukraine.com/blog/laravel-artisan-dev-keruvannia-serverom-cergami-logami-ta-vite
date: 2026-08-11
source: https://laravel-news.com/artisan-dev-command?utm_medium=feed&utm_source=feedpress.me&utm_campaign=Feed%3A+laravelnews
---

# Laravel artisan dev: керування сервером, чергами, логами та Vite

Laravel 13 представив нову команду `artisan dev`, яка стандартизує всі інструменти, необхідні для роботи над проєктом: сервер розробки, воркер черг, виведення логів, Vite та інше. До недавнього часу skeleton-додаток об'єднував їх через скрипт `dev` у `composer.json`, який запускав чотири команди через `npx concurrently`.

## Заміна composer-скрипта на artisan-команду

Laravel 13.16 замінив це рішення на офіційну команду:

```
php artisan dev
```

Скрипт `composer dev` все ще існує в skeleton-шаблоні, але тепер він лише викликає `php artisan dev`. Список процесів перенесено в PHP, де ви можете реєструвати власні процеси через клас `DevCommands`.

## Стандартні процеси

За замовчуванням команда запускає чотири процеси:

- **server**: `php artisan serve --host=localhost`
- **queue**: `php artisan queue:listen --tries=1 --timeout=0`
- **logs**: `php artisan pail --timeout=0`
- **vite**: `npm run dev`

Процес Pail реєструється лише за наявності функції `pcntl_fork`, тому користувачі Windows отримують три інші процеси. Процес `vite` автоматично визначає менеджер пакетів за lockfile у проєкті (npm, pnpm, Yarn або Bun), тому в pnpm-проєкті він запустить `pnpm run dev` без додаткових налаштувань.

Під капотом команда все ще використовує `concurrently`, а з версії 13.18 передає прапорець `--kill-others-on-fail`. Це означає, що збій одного процесу зупиняє всі інші, замість того щоб залишати напівробочий стек.

## Реєстрація власних процесів

Стандартні налаштування підходять для нового проєкту, але більшість додатків швидко виходять за їхні межі. Розгляньмо додаток, який використовує Horizon замість `queue:listen`, транслює події через Reverb, приймає Stripe-вебхуки локально через Stripe CLI та перевіряє типи TypeScript у режимі watch.

Все це можна зареєструвати в методі `boot` вашого `AppServiceProvider`:

```php
namespace App\Providers;

use Illuminate\Foundation\DevCommands;
use Illuminate\Support\ServiceProvider;

class AppServiceProvider extends ServiceProvider
{
    public function boot(): void
    {
        if (! $this->app->environment('local')) {
            return;
        }

        DevCommands::artisan('horizon', 'queue');
        DevCommands::artisan('reverb:start --debug', 'reverb')->purple();
        DevCommands::register(
            'stripe listen --forward-to '.config('app.url').'/stripe/webhook',
            'stripe'
        )->orange();
        DevCommands::nodeExec('tsc --noEmit --watch --preserveWatchOutput', 'types')->yellow();
    }
}
```

## Методи реєстрації

Для реєстрації процесів доступні чотири методи:

- **artisan()**: додає префікс `php artisan` до команди
- **node()**: додає префікс команди запуску виявленого менеджера пакетів
- **nodeExec()**: використовує команду exec (`npx` та аналоги)
- **register()**: приймає сирий shell-команду для будь-чого іншого, як Stripe CLI вище

Другий аргумент - це ім'я процесу, що відображається в терміналі. Якщо його опустити, ім'ям стає перше слово команди (`horizon`, `reverb:start`, `stripe`).

## Заміна стандартних процесів

Ім'я є ідентифікатором процесу, тому повторне використання імені дозволяє замінити або переналаштувати стандартний процес. У прикладі вище реєстрація процесу з іменем `queue` замінює стандартний `queue:listen` воркер на Horizon.

Порядок реєстрації не має значення. Команди, зареєстровані у вашому додатку, завжди мають перевагу над стандартними від фреймворку, а обидва типи мають перевагу над командами з `vendor`. Це означає, що встановлений пакет не може непомітно перехопити процес, який ви визначили. Пакети надають метод, який ви викликаєте самостійно, замість автоматичного підключення під час виявлення.

## Налаштування кольорів

Кольори необов'язкові. Кожен процес автоматично отримує окремий колір, і ви використовуєте методи `blue()`, `purple()`, `pink()`, `orange()`, `green()`, `yellow()` або `color('#ff6347')` лише коли хочете, щоб конкретний процес виділявся.

## Перегляд та фільтрація списку

Щоб побачити зареєстровані процеси без їх запуску, виконайте `php artisan dev:list` (додано в версії 13.17). Команда виводить кожен процес, його команду та файл із номером рядка, де його зареєстровано - корисно, коли інструкції пакета додали щось, про що ви забули.

Ви також можете обмежити список без видалення реєстрацій:

```php
// Запустити лише server та vite...
DevCommands::only('server', 'vite');

// Запустити все, крім queue воркера...
DevCommands::except('queue');
```

Обидва методи є фільтрами, що застосовуються під час виконання, тому процес, виключений через `except()`, все ще відображається у вашому provider і може бути повернутий видаленням одного рядка.

## Автор та документація

Команду `dev` додав Joe Tannenbaum у Pull Request #60412. Повні деталі доступні в офіційній документації Artisan для Laravel 13.x.
