Слава Україні!
Laravel 9. Vite - тонкая настройка
Не раз сталкивался с таким случаем - при сборке проекта с помощью Vite все файлы стилей и скриптов для разных модулей (напр. backend, frontend) компилируются в единый файл. Хотелось видеть отдельную сборку для backend`a и frontend`a.
Для этого изменил структуру подпапок в папке resources. Вынес файлы стилей и скриптов в соответствующие подпапки.
Теперь "причесываем" сам vite.config.js
import { defineConfig } from 'vite';
import laravel from 'laravel-vite-plugin';
export default defineConfig({
plugins: [
laravel({
// меняем папку сборки на assets
buildDirectory: "public/assets",
// входящие файлы для компиляции
// указываем отдельно для backend`a и frontend`a
input: [
'resources/sass/frontend/app.scss',
'resources/sass/backend/app.scss',
'resources/js/frontend/app.js',
'resources/js/backend/app.js',
],
refresh: true,
}),
],
// опции для компиляции
build: {
// куда компилируем
outDir: "public/assets",
// генерировать manifest.json
manifest: true,
rollupOptions: {
// опции для формирования пути и названий скриптов
// разбивать по фрагментам
// скрипты импортированных библиотек (точек входа)
// компилировать в отдельные файлы
output: {
chunkFileNames: 'js/[name]-[hash].js',
entryFileNames: 'js/[name]-[hash].js',
assetFileNames: ({ name }) => {
if (/\.(gif|jpe?g|png|svg)$/.test(name ?? '')) {
return 'img/[name]-[hash][extname]';
}
if (/\.css$/.test(name ?? '')) {
return 'css/[name]-[hash][extname]';
}
if (/\.(woff2?)$/.test(name ?? '')) {
return 'font/[name]-[hash][extname]';
}
return '[name]-[hash][extname]';
},
},
}
}
});
В результате, после сборки, получаем такую структуру папок и файлов:
Далее в главном шаблоне frontend`a (по умолчанию app.blade.php) прописываем:
<head>
...
@vite('resources/sass/frontend/app.scss', 'assets')
...
</head>
<body>
...
...
@vite('resources/js/frontend/app.js', 'assets')
</body>
Соответствующие записи (изменив пути) делаем в шаблоне backend`a.
Если же заглянуть в файл manifest.json, то мы увидим соответствия ресурсов скомпилированым скриптам:
"resources/js/frontend/app.js": {
"file": "js/app-6edac705.js",
"imports": [
"_jquery-0e5c5a1e.js"
],
"isEntry": true,
"src": "resources/js/frontend/app.js"
},
"resources/sass/backend/app.scss": {
"file": "css/app-c41831d1.css",
"isEntry": true,
"src": "resources/sass/backend/app.scss"
},
"resources/sass/frontend/app.scss": {
"file": "css/app-324c0c2d.css",
"isEntry": true,
"src": "resources/sass/frontend/app.scss"
}
Важлива інформація
Міністерство оборони
України
України
з 24.02 по 07.12
втрати противника
орієнтовно склали:
втрати противника
орієнтовно склали:
751910 ( +1300 )
особового складу
9514 ( +0 )
танків
19535 ( +17 )
бойових бронемашин
21055 ( +12 )
артилерійських систем
1253 ( +0 )
РСЗВ
1022 ( +2 )
засоби ППО
369 ( +0 )
літаків
329 ( +0 )
гелікоптерів
30948 ( +49 )
автомобільної техніки
28 ( +0 )
кораблі / катери
2857 ( +0 )
крилаті ракети
20042 ( +19 )
БПЛА
3633 ( +0 )
спец. техніки
4 ( +0 )
установок ОТРК/ТРК
1 ( +0 )
підводні човни