Fáze požadavku: 9. Blade & Livewire prezentace
Modul 4 · Lekce 3

Jak v Laravelu funguje Vite a Tailwind CSS kompilace

💡 Shrnutí lekce

Moderní frontendový bundler Vite 7, nový oficiální Vite plugin @tailwindcss/vite pro Tailwind CSS v4, direktiva @vite a kompilace assetů pro vývoj i produkci.

Moderní asset pipeline: Vite 7 & Tailwind CSS v4

V éře moderního webového vývoje byl starý a pomalý Webpack (Laravel Mix) plně nahrazen nástrojem Vite. Vite využívá nativní ES moduly v prohlížeči, což znamená, že spuštění vývojového serveru a Hot Module Replacement (HMR) probíhá během desítek milisekund bez nutnosti předem bundleovat celou aplikaci.

V našem projektu navíc používáme zbrusu nový Tailwind CSS v4 s oficiálním pluginem @tailwindcss/vite.

resources/css/app.css ──┐
resources/js/app.js   ──┴──► Vite + @tailwindcss/vite ──► public/build/ (Optimalizováno pro produkci)
                                                                │
                                                         manifest.json
                                                                │
                                              Čte direktiva @vite v Blade

1. Rozbor konfigurace v vite.config.js

Podívej se do našeho souboru vite.config.js:

import { defineConfig } from 'vite';
import laravel from 'laravel-vite-plugin';
import tailwindcss from '@tailwindcss/vite';

export default defineConfig({
    plugins: [
        laravel({
            input: ['resources/css/app.css', 'resources/js/app.js'],
            refresh: true, // Automatický reload při změně Blade šablon!
        }),
        tailwindcss(), // Nativní integrace Tailwind CSS v4 engine
    ],
    server: {
        watch: {
            ignored: ['**/storage/framework/views/**'],
        },
    },
});

Proč je tato konfigurace unikátní:

  1. refresh: true: Kdykoliv upravíte Blade šablonu nebo PHP controller, Vite automaticky obnoví stránku v prohlížeči.
  2. tailwindcss(): Ve verzi 4 již nepotřebujeme starý PostCSS ani konfigurační soubor tailwind.config.js! Veškerá konfigurace probíhá přímo v CSS.

2. Anatomie resources/css/app.css v Tailwind CSS v4

V Tailwind CSS v4 došlo k radikálnímu zjednodušení. Staré direktivy @tailwind base; @tailwind components; @tailwind utilities; byly nahrazeny jediným moderním importem:

@import 'tailwindcss';

@source '../../vendor/laravel/framework/src/Illuminate/Pagination/resources/views/*.blade.php';
@source '../../storage/framework/views/*.php';
@source '../**/*.blade.php';
@source '../**/*.js';

@theme {
    --font-sans: 'Instrument Sans', ui-sans-serif, system-ui, sans-serif;
}

Klíčové direktivy Tailwind v4:

  • @import 'tailwindcss'; — Zaveze kompletní moderní jádro Tailwindu.
  • @source — Určuje soubory, které má kompilátor skenovat pro výskyt CSS tříd (JIT kompilace).
  • @theme — Umožňuje definovat a přepsat CSS proměnné designového systému přímo v CSS.

3. Direktiva @vite v produkci vs. lokálním vývoji

V šabloně layouts/app.blade.php máme řádek:

@vite(['resources/css/app.css', 'resources/js/app.js'])

Jak tato direktiva funguje pod kapotou?

  • Při lokálním vývoji (npm run dev): Direktiva detekuje běžící Vite dev server (pomocí souboru public/hot) a vloží tagy odkazující na http://localhost:5173/resources/css/app.css s podporou bleskového Hot Module Replacement.
  • V produkci po npm run build: Direktiva načte soubor public/build/manifest.json. Ten obsahuje přesné mapování původních souborů na jejich verzované a minifikované produkční otisky (např. app-D8sF2a9.css). Díky tomu mají uživatelé vždy aktuální verzi bez problémů s mezipamětí prohlížeče!
💻 Klíčová konstrukce z praxe
// vite.config.js — Reálná moderní konfigurace v našem projektu
import { defineConfig } from 'vite';
import laravel from 'laravel-vite-plugin';
import tailwindcss from '@tailwindcss/vite';

export default defineConfig({
    plugins: [
        // 1. Oficiální Laravel plugin pro Vite s podporou auto-refresh pro Blade
        laravel({
            input: ['resources/css/app.css', 'resources/js/app.js'],
            refresh: true,
        }),
        // 2. Nejnovější Tailwind CSS v4 engine (bez nutnosti postcss.config.js)
        tailwindcss(),
    ],
    server: {
        watch: {
            // Ignorujeme zkompilované Blade views, aby nedocházelo k cyklickému reloadu
            ignored: ['**/storage/framework/views/**'],
        },
    },
});

🎯 Ověření znalostí z lekce

Kvíz otestuje pochopení architektury a reálného kódu probíraného v této lekci.

Otázka 1 z 3

Který plugin v našem vite.config.js integruje nejnovější Tailwind CSS v4 do Vite bundleru?

Otázka 2 z 3

Jak direktiva @vite v Blade šabloně rozlišuje mezi vývojovým (dev) a produkčním režimem?

Otázka 3 z 3

Jaká je hlavní architektonická změna v zápisu konfigurace Tailwind CSS v4 v resources/css/app.css?

Zodpovězeno: 0 / 3
🔬 Živá anatomie v této aplikaci
3 soubory
Na co se v kódu zaměřit: V vite.config.js a resources/css/app.css si všimni čistoty moderního Tailwind CSS v4. Namísto dřívějších souborů tailwind.config.js a postcss.config.js vše řeší @tailwindcss/vite a direktivy @import 'tailwindcss', @source a @theme přímo v CSS.
cesta: vite.config.js
18 řádků · 0.4 KB
Soubor aplikační architektury v modulu Project Manifest & Config.
1 import { defineConfig } from 'vite';
2 import laravel from 'laravel-vite-plugin';
3 import tailwindcss from '@tailwindcss/vite';
4
5 export default defineConfig({
6 plugins: [
7 laravel({
8 input: ['resources/css/app.css', 'resources/js/app.js'],
9 refresh: true,
10 }),
11 tailwindcss(),
12 ],
13 server: {
14 watch: {
15 ignored: ['**/storage/framework/views/**'],
16 },
17 },
18 });
19
cesta: package.json
17 řádků · 0.4 KB
Soubor aplikační architektury v modulu Project Manifest & Config.
1 {
2 "$schema": "https://www.schemastore.org/package.json",
3 "private": true,
4 "type": "module",
5 "scripts": {
6 "build": "vite build",
7 "dev": "vite"
8 },
9 "devDependencies": {
10 "@tailwindcss/vite": "^4.0.0",
11 "axios": "^1.11.0",
12 "concurrently": "^9.0.1",
13 "laravel-vite-plugin": "^2.0.0",
14 "tailwindcss": "^4.0.0",
15 "vite": "^7.0.7"
16 }
17 }
18
cesta: resources/css/app.css
11 řádků · 0.4 KB
Soubor aplikační architektury v modulu Source Code.
1 @import 'tailwindcss';
2
3 @source '../../vendor/laravel/framework/src/Illuminate/Pagination/resources/views/*.blade.php';
4 @source '../../storage/framework/views/*.php';
5 @source '../**/*.blade.php';
6 @source '../**/*.js';
7
8 @theme {
9 --font-sans: 'Instrument Sans', ui-sans-serif, system-ui, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji',
10 'Segoe UI Symbol', 'Noto Color Emoji';
11 }
12
Zdroj: skutečné soubory této aplikace Plný průzkumník anatomie →