Кожен стартер-кіт Laravel тепер використовує Vite+ - уніфікований набір інструментів, випущений у бета-версії 2 липня 2026 року. Про перехід оголосив Taylor Otwell у X:
Усі стартер-кіти Laravel тепер постачаються з Vite+.
Зміни внесено у laravel/maestro#60 автором Wendell Adriel, і того ж дня Maestro синхронізував оновлення у репозиторії для React, Vue, Svelte та Livewire. Pull request торкається всіх варіантів стартер-кітів і фіксує версію vite-plus на 0.3.0.
Vite+ - це єдина CLI під назвою vp, що об'єднує Vite, Rolldown, Vitest, tsdown, Oxlint, Oxfmt і Vite Task, керуючи також середовищем виконання та менеджером пакетів. Для стартер-кітів практичний результат полягає в тому, що ESLint і Prettier більше не є частиною налаштувань фронтенду.
Чотири команди стають двома
Інерційні кіти раніше мали окремі скрипти lint, lint:check, format і format:check. Тепер вони згортаються в vp check, який форматує через Oxfmt, перевіряє за допомогою Oxlint і виконує перевірку типів за один прохід:
"scripts": {
"build": "vp build",
"build:ssr": "vp build && vp build --ssr",
"dev": "vp dev",
"check": "vp check",
"check:fix": "vp check --fix",
"types:check": "tsc --noEmit"
}
composer ci:check йде тим самим шляхом, запускаючи npm run check замість послідовного виконання npm run lint:check і npm run format:check.
Видалення старого набору інструментів призвело до усунення eslint.config.js, .prettierrc і .prettierignore з кожного Inertia-кіту, а також близько дюжини devDependencies: eslint, typescript-eslint, prettier, prettier-plugin-tailwindcss, плагінів ESLint для React, Vue, Svelte та imports, а також globals. Лише React-кіт позбувся 129 рядків конфігурації ESLint.
Правила лінтингу та форматування переміщено у vite.config
Після видалення окремих конфігураційних файлів правила тепер знаходяться у vite.config.ts під ключами lint і fmt. Попередження розглядаються як помилки, а перевірка типів увімкнена:
import { defineConfig, lazyPlugins } from 'vite-plus';
export default defineConfig({
plugins: lazyPlugins(() => [
// ...
]),
lint: {
ignorePatterns: [
'vendor/**',
'bootstrap/ssr/**',
'resources/js/actions/**',
'resources/js/components/ui/*',
'resources/js/routes/**',
'resources/js/wayfinder/**',
],
options: {
denyWarnings: true,
typeAware: true,
},
},
fmt: {
printWidth: 80,
tabWidth: 4,
singleQuote: true,
semi: true,
sortTailwindcss: {
functions: ['clsx', 'cn', 'cva'],
entryPoint: 'resources/css/app.css',
},
},
});
Зміни для окремих стеків
React-кіт перейшов на @vitejs/plugin-react версії 6 і тепер запускає React Compiler через @rolldown/plugin-babel замість опції babel плагіна:
import babel from '@rolldown/plugin-babel';
import react, { reactCompilerPreset } from '@vitejs/plugin-react';
// ...
react(),
babel({
presets: [reactCompilerPreset()],
}),
Svelte-кіт замінив lucide-svelte на підтримуваний пакет @lucide/svelte. Livewire-кіт отримав найменші зміни серед чотирьох, оскільки не має TypeScript для перевірки: змінено два файли, переведено dev і build на vp і обгорнуто плагіни у lazyPlugins().
Як спробувати
Нові додатки, згенеровані зі стартер-кітів, автоматично отримують цю зміну. Щоб перенести існуючий Vite-проєкт, VoidZero надає команду міграції:
vp migrate
Посібник з міграції зазначає, що складні проєкти можуть потребувати ручного доопрацювання, тому прочитайте його перед запуском команди на продакшн-коді.
Повний diff доступний у laravel/maestro#60, а документація Vite+ розміщена на viteplus.dev.