Новий Terminal UI для команди artisan dev у Laravel

Перекладено ШІ 0 Laravel News 13 серпня, 2026

Оновлена команда php artisan dev отримала сучасний інтерфейс для роздільного керування Vite, Pail та чергами у зручних вкладках. Дізнайтеся, як Laravel 13.25 нарешті наводить лад у терміналі та автоматизує роботу локального середовища.

Запуск php artisan dev активує одразу чотири процеси в одному інтерфейсі термінала: сервер розробки, queue worker, Pail та Vite. До версії Laravel 13.25 усі вони виводили дані в один потік. Це створювало незручності: наприклад, коли Vite перезапускався саме в той момент, коли ви намагалися прочитати stack trace від Pail у логах воркера.

Раніше команда artisan dev базувалася на пакеті concurrently. У Laravel 13.25 його замінили на @laravel/multiplex — це спеціальний UI для термінала, який ізолює кожен процес. Вам не потрібно нічого встановлювати чи налаштовувати, php artisan dev підхопить зміни автоматично:

php artisan dev

# Три режими роботи

Tabs (Вкладки) — режим за замовчуванням. Кожен процес отримує власну вкладку, між якими можна перемикатися. Ви можете перезапускати окремі процеси або очищати їхні логи, не зачіпаючи інші. Якщо процес «впаде», він перезапуститься автоматично.

Stream (Потік) — класична поведінка, але з кращим інструментарієм. Це єдина стрічка з усіх процесів, у якій працює пошук та прокрутка, на відміну від стандартного буфера вашого термінала.

Inline — чистий вивід без будь-якого інтерфейсу. Цей режим активується автоматично, якщо немає TTY. Це саме те, що потрібно для роботи artisan dev у контейнерах, системах CI або під наглядом process supervisor.

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

php artisan dev --tabs
php artisan dev --stream
php artisan dev --inline

Також доступні скорочення: -t, -s та -i. Перемикатися між Tabs та Stream можна безпосередньо під час роботи інтерфейсу, тому прапорці потрібні лише для вибору початкового режиму.

Пошук доступний у режимах Tabs та Stream, а часові мітки можна увімкнути будь-де:

php artisan dev --timestamps

Після завершення команди весь вміст буфера виводиться в основний потік термінала. Отже, закриваючи UI, ви не втратите логів, які щойно переглядали.

# Налаштування проєкту за замовчуванням

Якщо вашій команді зручніше працювати в режимі Stream або ви хочете завжди бачити часові мітки, це можна закріпити в методі boot вашого AppServiceProvider:

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::stream();
        DevCommands::withTimestamps();
    }
}

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

Метод Опис
DevCommands::tabs() Одна вкладка на процес (за замовчуванням)
DevCommands::stream() Єдиний змішаний потік із можливістю прокрутки
DevCommands::inline() Звичайний вивід без UI
DevCommands::withTimestamps() Додавання часу на початку кожного рядка
DevCommands::disableAutoRestart() Вимкнення автоматичного перезапуску процесів
DevCommands::bufferSize(5000) Кількість рядків на процес у режимі Tabs
DevCommands::streamBufferSize(10000) Загальна кількість рядків у режимі Stream

Параметри командного рядка мають пріоритет над Service Provider: наприклад, php artisan dev --tabs скасує дію DevCommands::stream().

Зверніть увагу на розмір буфера. У режимі Tabs кожен процес має власний ізольований буфер, тому активний потік Vite не «виштовхне» повідомлення від queue worker за межі екрана. Якщо вам не вистачає історії прокрутки, просто збільште bufferSize().

# Автоматичний перезапуск

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

Новий підхід значно зручніший: якщо ви припустилися фатальної помилки під час редагування job class або зробили неправильний імпорт у Vite, вам не потрібно перезапускати весь стек вручну. Просто виправте файл, і процес відновиться сам. Якщо ви все ж хочете бачити помилку і зупиняти виконання, використовуйте:

php artisan dev --no-restart

Або вимкніть це назавжди через DevCommands::disableAutoRestart().

# Системні вимоги та платформи

Наразі інтеграція з multiplex працює лише на macOS та Linux. У Windows команда продовжує використовувати concurrently. Хоча методи налаштування режимів і буфера там не діють, прапорці --timestamps та --no-restart працюють на всіх платформах.

Також необхідний Node версії 22.13 або новішої. Framework автоматично запускає пакет через ваш менеджер пакетів (npx або pnpm dlx), тому додавати залежність у package.json не потрібно.

Для розробників інструментів з’явився прапорцець --json:

php artisan dev --json

Він змушує команду видавати структуровані JSON-події замість форматованого тексту. Це корисно для створення розширень для IDE або власних дашбордів.

# Виправлення SERVER_HOST

Раніше процес server реєструвався як serve --host=localhost. Оскільки параметри командного рядка мають пріоритет над змінними оточення, SERVER_HOST ігнорувався. Це заважало відкривати сервер розробки для інших пристроїв у мережі.

Тепер за замовчуванням використовується просто serve, тож ви знову можете керувати хостом:

SERVER_HOST=0.0.0.0 php artisan dev

Якщо ви створювали власні обхідні рішення для реєстрації процесу server, тепер їх можна видалити.

# Що ще почитати

Популярні

Інше, що варто прочитати

42 Оновлено 26 червня, 2026

Що нового в PHP 8.5

PHP 8.5 обіцяє безліч нових можливостей, таких як оператор Pipe, функції `array_first()` та `array_last()`, а також нове розширення URI. Чи готові ви дізнатися, як ці функції можуть спростити вашу розробку? Читайте далі, щоб дізнатися більше про ці захоплюючі нововведення

33 Оновлено 26 червня, 2026

Інтеграція Laravel Socialite з бібліотекою Google Client PHP

Ви хочете навчитися, як інтегрувати Google OAuth у вашому проекті Laravel, використовуючи Socialite? Дізнайтеся, як налаштувати доступ до сервісів Google, таких як Календар, у нашій сьогоднішній статті

10 Оновлено 26 червня, 2026

Остаточний посібник з вебхуків у Laravel

Сучасні веб-додатки вимагають миттєвого обміну інформацією, і вебхуки стають незамінними помічниками у цьому процесі. Пориньте у світ вебхуків у Laravel і дізнайтеся, як легко реалізувати цю технологію у своїх проєктах, забезпечуючи безпеку та продуктивність