Aktualizacja Tailwind CSS może zmienić wygląd motywu WordPress lub sklepu WooCommerce, nawet gdy build kończy się bez błędu. Problemy często ujawniają się w szablonach PHP, dynamicznie składanych klasach i widokach generowanych przez wtyczki.
Krótka odpowiedź
Tailwind CSS v4 zmienia import arkusza na `@import "tailwindcss"`, przenosi główną konfigurację do CSS i automatycznie wykrywa klasy w źródłach. Migrację wykonaj na osobnym branchu, użyj `npx @tailwindcss/upgrade` na Node.js 20 lub nowszym i sprawdź produkcyjny build oraz krytyczne widoki.
Tailwind CSS v4 wymaga Safari 16.4, Chrome 111 i Firefox 128 lub nowszych.
Usługi KC Mobile
Potrzebujesz pomocy w tym temacie?
Czytasz poradnik „Tailwind CSS v4: jak przejść z v3 i uniknąć problemów”. Napisz, co chcesz zrobić i na jakim etapie jesteś. Ustalimy, czy możemy pomóc i jaki zakres prac będzie potrzebny.
Co zmieniło się między Tailwind CSS v3 a v4?
Tailwind CSS v4 wprowadza konfigurację CSS-first, zmienia integracje z bundlerami i automatycznie wykrywa klasy w plikach projektu. W v3 arkusz zwykle zawierał dyrektywy `@tailwind`, a ścieżki szablonów deklarowało się w `content` pliku konfiguracyjnym. W v4 używa się `@import "tailwindcss"`, a tokeny motywu można deklarować przez `@theme`.
Tabela zestawia zmiany między wersjami i wskazuje, co trzeba sprawdzić w istniejącym projekcie.
| Obszar | Tailwind CSS v3 | Tailwind CSS v4 | Co sprawdzić po migracji |
|---|---|---|---|
| Import arkusza | Dyrektywy `@tailwind` | `@import "tailwindcss"` | Czy motyw ładuje właściwy arkusz |
| Konfiguracja | `tailwind.config.*` i `content` | CSS-first i skanowanie źródeł | Czy tokeny i źródła są rozpoznane |
| Integracja PostCSS | Plugin `tailwindcss` | `@tailwindcss/postcss` | Czy konfiguracja wskazuje nowy pakiet |
| Integracja Vite | Zwykle PostCSS | `@tailwindcss/vite` | Czy plugin jest w `vite.config.*` |
| Safelist | Opcja `safelist` | `@source inline()` | Czy klasy z danych są generowane |
| Przeglądarki | Zależy od użytych funkcji CSS | Wersje wskazane w osobnej tabeli | Czy wymagania pasują do odbiorców |
Konfiguracja JavaScript nie jest automatycznie ładowana przez v4. Można podłączyć ją dyrektywą `@config`, ale część opcji, w tym `corePlugins`, `safelist` i `separator`, nie jest obsługiwana. Klasy, których nie ma w skanowanych plikach, można wskazać przez `@source inline()`.
Część utilities zmieniła nazwy lub wartości domyślne. Przykładowo `bg-opacity-*` zastępuje się modyfikatorem opacity w klasie koloru, `flex-shrink-*` zmienia się na `shrink-*`, a domyślna grubość klasy `ring` jest inna. Build może się udać, mimo że komponent wygląda inaczej, dlatego porównaj reprezentatywne widoki.
Tailwind CSS v4.0 wymaga Safari 16.4, Chrome 111 i Firefox 128 lub nowszych. Jeżeli projekt musi obsługiwać starsze wersje, dokumentacja Tailwind zaleca pozostanie przy v3.4 do czasu zmiany wymagań. Szczegółowy wykaz zmian zawiera oficjalny przewodnik migracji Tailwind CSS.
Czytasz poradnik „Tailwind CSS v4: jak przejść z v3 i uniknąć problemów”. Napisz, co chcesz zrobić i na jakim etapie jesteś. Ustalimy, czy możemy pomóc i jaki zakres prac będzie potrzebny. Omów temat tego poradnika
Czy projekt jest gotowy do migracji?
Projekt jest gotowy do migracji, gdy można odtworzyć build i wskazać miejsca, z których mają być wykrywane klasy. Przed zmianą zanotuj wersję Node.js, komendę produkcyjną, lockfile, konfigurację bundlera i widoki dostępne na stagingu. W motywie WordPress uwzględnij pliki PHP, bloki, partiale i katalogi wtyczek dostarczające markup z klasami Tailwind.
Tabela porządkuje dane, które warto zachować przed rozpoczęciem zmiany. Dzięki temu po migracji łatwiej porównać konfigurację i ustalić źródło regresji.
| Element | Gdzie sprawdzić | Co zapisać |
|---|---|---|
| Node.js | Lokalnie i w CI | Wersję dla produkcyjnego buildu |
| Bundler | `package.json` i konfiguracja | Komendy developerskie i produkcyjne |
| Zależności | `package.json` i lockfile | Tailwind, PostCSS, Vite i pluginy |
| Arkusz wejściowy | CSS importowany przez motyw | Importy, warstwy i kolejność stylów |
| Konfiguracja | `tailwind.config.*` i `postcss.config.*` | `content`, tokeny, pluginy i `darkMode` |
| Źródła klas | Motyw i używane biblioteki | Pliki PHP, bloki i komponenty sklepu |
| Widoki testowe | Staging lub kopia lokalna | Strony i stany wymagające porównania |
Własne pluginy i tokeny wymagają osobnego przeglądu, ponieważ migrator może nie odtworzyć ich logiki. Wyszukaj klasy dynamiczne, utilities opacity oraz style zapisane w `@layer components` lub `@layer utilities`. W v4 własne utilities rejestruje się dyrektywą `@utility`, a CSS korzysta z natywnych warstw kaskady.
Zapisz przed zmianą widoki reprezentatywne dla projektu: kategorię, produkt wariantowy, koszyk, checkout i komunikat walidacyjny. Jeśli motyw ma menu mobilne, filtry lub popup, uwzględnij ich stany otwarte i zamknięte. Wybór systemu treści warto powiązać z porównaniem WordPressa, Drupala i Joomli.
Jak przejść z Tailwind v3 na v4 krok po kroku?
Migrację wykonaj na osobnym branchu, żeby móc przywrócić zależności, konfigurację CSS i lockfile jako spójny zestaw. Oficjalny upgrader automatyzuje większość zmian, ale jego wynik wymaga przeglądu.
1. Utwórz branch migracyjny i zapisz commit bazowy oraz aktualny build.
2. Sprawdź Node.js lokalnie i w CI; `npx @tailwindcss/upgrade` wymaga Node.js 20 lub nowszego.
3. Uruchom `npx @tailwindcss/upgrade` w katalogu projektu.
4. Przejrzyj zmiany zależności, konfiguracji, CSS i szablonów, ze szczególnym uwzględnieniem pluginów.
5. Uruchom komendę produkcyjną z `package.json` w środowisku zgodnym z CI.
6. Porównaj reprezentatywne widoki na stagingu z wersją v3.
W projekcie Vite Tailwind zaleca plugin `@tailwindcss/vite`. Dodaj `tailwindcss()` do `plugins` w `vite.config.*`, a w arkuszu wejściowym umieść `@import "tailwindcss";`. W projekcie PostCSS skonfiguruj `@tailwindcss/postcss` w `postcss.config.*`; sam pakiet `tailwindcss` nie pełni już funkcji pluginu PostCSS.
Jeśli nie używasz automatycznego upgradera, wykonuj zmianę etapami: zaktualizuj zależności, integrację bundlera i import CSS, następnie przenieś tokeny do `@theme` i uzupełnij źródła klas przez `@source`. Build po każdym etapie ułatwia odróżnienie błędów konfiguracji od różnic wizualnych.
Po zbudowaniu arkusza potwierdź, że motyw ładuje nowy asset. W DevTools otwórz kartę Network i sprawdź adres, status oraz zawartość pobranego CSS. Jeśli widzisz poprzednią wersję arkusza, sprawdź cache buildu, wtyczki optymalizującej i CDN.
W projektach WordPress zakres prac zależy od motywu, pipeline'u i liczby widoków do sprawdzenia. Jeśli potrzebujesz wykonawcy prac przy witrynie WordPress, poznaj ofertę tworzenia stron na WordPressie, a przed ustaleniem migracji zweryfikuj, czy dany zakres odpowiada potrzebom projektu.

Dlaczego po aktualizacji znikają klasy z motywu lub wtyczki?
Brak stylu po aktualizacji najczęściej oznacza, że Tailwind nie wygenerował reguły albo inny arkusz ją nadpisał. Tailwind v4 skanuje pliki jako zwykły tekst i wyszukuje pełne ciągi przypominające nazwy klas. Nie analizuje logiki PHP ani JavaScript, więc nie odczyta nazwy złożonej z fragmentów.
Tabela łączy objaw z miejscem diagnozy i poprawką. Sprawdź najpierw CSS wygenerowany przez build, a później kaskadę w DevTools.
| Objaw | Prawdopodobna przyczyna | Jak sprawdzić | Możliwa poprawka |
|---|---|---|---|
| Brak klasy w CSS | Klasa składana z fragmentów | Wyszukaj pełną nazwę w kodzie | Użyj mapy pełnych nazw |
| Klasy biblioteki nie działają | Pliki są w `node_modules` | Sprawdź ścieżkę biblioteki | Dodaj katalog przez `@source` |
| Brakuje klas z PHP | Motyw nie jest skanowany | Sprawdź bazę skanowania | Ustaw `source()` lub `@source` |
| Działa lokalnie, nie na serwerze | Inny build lub cache assetu | Porównaj log CI i CSS z serwera | Ujednolić build i odświeżyć cache |
| Styl znika po interakcji | Brak klasy dla stanu | Sprawdź klasy hover i focus | Zapisz pełne nazwy albo użyj `@source inline()` |
| Klasa jest w CSS, ale wygląd się różni | Nadpisanie lub zmiana utility | Sprawdź computed styles | Skoryguj klasę lub kolejność arkuszy |
Tailwind domyślnie pomija pliki z `.gitignore`, katalog `node_modules`, pliki binarne, CSS i lockfile. Bibliotekę z klasami można jawnie dodać, na przykład `@source "../node_modules/nazwa-paczki";`. Ścieżka jest liczona względem arkusza CSS. W monorepo bazę skanowania można określić przez `source("../src")` w imporcie Tailwind.
Klasa złożona w PHP przez połączenie fragmentów, na przykład `bg-`, nazwy koloru i `-600`, nie występuje w kodzie jako pełny token. Zastąp takie składanie mapą, w której każdy wariant zawiera kompletną klasę, na przykład `blue => bg-blue-600` i `red => bg-red-600`. Gdy nazwy pochodzą wyłącznie z bazy danych lub API, wskaż wymagane utilities przez `@source inline("...")`.
Brak selektora w arkuszu wskazuje na problem źródła lub nazwy klasy. Selektor obecny, ale przekreślony w DevTools, oznacza konflikt kaskady. Zasady skanowania i rejestrowania źródeł zawiera dokumentacja wykrywania klas Tailwind.
Co sprawdzić w sklepie WooCommerce po migracji?
Po migracji przetestuj produkt, koszyk, checkout, menu mobilne i walidację na desktopie oraz telefonie. Błąd CSS może ukryć wybór wariantu, cenę lub komunikat błędnego pola, nawet jeśli strona główna wygląda poprawnie.
Tabela przedstawia przypadki testowe i warunek akceptacji każdego widoku. Przejdź je na stagingu po zbudowaniu arkusza produkcyjnego.
| Widok lub stan | Przypadek testowy | Kryterium akceptacji |
|---|---|---|
| Produkt | Produkt prosty, wariantowy i niedostępny | Cena, wariant i przycisk są czytelne |
| Koszyk | Pusty koszyk i koszyk z produktem | Zmiana ilości aktualizuje widok |
| Checkout | Poprawne oraz niepełne dane | Pola i komunikaty nie nachodzą na siebie |
| Menu mobilne | Otwarcie, zamknięcie i podmenu | Menu działa dotykiem i nie zasłania zakupu |
| Komunikat | Błąd płatności i potwierdzenie dodania | Komunikat pozostaje widoczny |
| Filtry | Kategoria, sortowanie i paginacja | Stan filtrów i kontrolek jest widoczny |
Testuj działanie komponentów, nie tylko ich statyczny wygląd. Zmień wariant produktu, liczbę sztuk w koszyku i wyślij niepełny formularz checkoutu. Otwórz menu na wąskim ekranie, sprawdź obsługę klawiaturą oraz komunikat po dodaniu produktu.
Wtyczki i buildery mogą generować markup poza katalogiem motywu. Jeśli ich klasy nie pojawiają się w CSS, dodaj odpowiednią ścieżkę przez `@source` albo zastąp dynamiczne składanie pełnymi nazwami. Uwzględnij stany pojawiające się po interakcji, ponieważ mogą być niewidoczne w pierwszym widoku strony.

Czy Tailwind v4 działa z używanym stosem projektu?
Tailwind CSS v4 może współpracować z WordPressem, Vite i PostCSS, jeśli pipeline buduje arkusz v4 i skanuje właściwe źródła. WordPress dostarcza markup, a Tailwind kompiluje CSS w środowisku developerskim lub CI. Zgodność należy więc potwierdzić oddzielnie dla integracji i każdej wymaganej przeglądarki.
Tabela pokazuje pojedynczy warunek dla każdego składnika stosu. Wiersze przeglądarek rozdzielają wymagane wersje, aby można je było porównać z ruchem witryny.
| Środowisko | Warunek zgodności | Ryzyko | Sposób weryfikacji |
|---|---|---|---|
| WordPress | Pipeline motywu buduje CSS v4 | Skaner pomija pliki PHP | Szukaj klas w CSS i sprawdź staging |
| Vite | Plugin `@tailwindcss/vite` | Została stara integracja PostCSS | Uruchom produkcyjny build |
| PostCSS | Plugin `@tailwindcss/postcss` | Nieaktualny wpis pluginu | Sprawdź `postcss.config.*` i log |
| Safari | Wersja 16.4 lub nowsza | Starsza wersja nie spełnia wymagań v4 | Porównaj wymagania z ruchem witryny |
| Chrome | Wersja 111 lub nowsza | Starsza wersja nie spełnia wymagań v4 | Porównaj wymagania z ruchem witryny |
| Firefox | Wersja 128 lub nowsza | Starsza wersja nie spełnia wymagań v4 | Porównaj wymagania z ruchem witryny |
| Współdzielony CSS | Ustalona kolejność warstw i importów | Konflikt Preflight lub stylów wtyczek | Sprawdź kaskadę w DevTools |
Tailwind v4 importuje warstwy `theme`, `base`, `components` i `utilities`; Preflight zmienia podstawowe style elementów HTML. W istniejącym motywie reset może wpłynąć na wygląd komponentów wtyczek. Jeśli projekt nie powinien używać Preflight, można zaimportować wybrane części Tailwind i pominąć `preflight.css`.
Wstrzymaj aktualizację, jeśli nie można odtworzyć produkcyjnego buildu, źródła klas nie trafiają do CSS albo projekt musi obsługiwać przeglądarki starsze niż wymagane. Osobnej analizy wymaga plugin, którego konfiguracji migrator nie przenosi i którego nie da się zastąpić bez zmian w projekcie. Dokumentacja zgodności Tailwind CSS opisuje wymagania przeglądarek i ograniczenia narzędzi.
Jak cofnąć migrację, jeśli build lub wdrożenie się nie powiedzie?
Rollback przywraca spójny zestaw zależności, lockfile, konfiguracji CSS i assetów z poprzedniej wersji. Cofnięcie samego arkusza przy pozostawieniu nowych pakietów może uniemożliwić odtworzenie buildu. Przed migracją zapisz commit bazowy, wersję Node.js i komendę wdrożeniową.
Gdy build lokalny lub CI kończy się błędem, zachowaj komunikat z pierwszej nieudanej operacji, wersję Node.js, manager pakietów i zmiany konfiguracji. Komunikat `Cannot find package '@tailwindcss/postcss'` wskazuje zwykle na brak zależności lub niezgodny wpis w PostCSS. Brak `@tailwindcss/vite` oznacza, że plugin nie jest dostępny w środowisku buildu.
Gdy build przechodzi, ale witryna nie ma stylów, sprawdź w DevTools kartę Network: kod odpowiedzi arkusza, jego adres i zawartość. Porównaj asset wdrożony na serwerze z wynikiem lokalnym, a następnie sprawdź cache aplikacji, wtyczki optymalizującej i CDN. Zapisz wersję pobranego pliku przed czyszczeniem cache.
Gdy pojawia się regresja wizualna, porównaj ten sam widok przy tej samej szerokości i sprawdź computed styles wadliwego elementu. Brak selektora kieruje do wykrywania źródeł, a selektor przekreślony w DevTools wskazuje konflikt kolejności lub kaskady. Po poprawce wykonaj build produkcyjny i ponownie przejdź krytyczne ścieżki sklepu.
Jeśli wdrożenie powoduje błąd krytyczny, przywróć poprzedni commit lub artefakt razem z poprzednim lockfile. Odtwórz problem na stagingu w osobnym branchu. Rollback jest zakończony, gdy produkcja serwuje poprzedni arkusz, kluczowe widoki działają i logi nie pokazują błędów ładowania CSS.
Co wpływa na zakres migracji?
Zakres migracji zależy od liczby źródeł klas, własnych pluginów, dynamicznych nazw i widoków wymagających kontroli. Podmiana pakietu w prostym projekcie obejmuje mniej zmian niż motyw WordPress ze wspólnymi bibliotekami i rozbudowanym checkoutem. Zakres ustal przed rozpoczęciem pracy, oddzielając zmianę pipeline'u od porządkowania kodu i testów.
Tabela porównuje trzy scenariusze i wskazuje, co zwiększa zakres w każdym z nich. Nie przypisuje scenariuszom stałej liczby godzin, ponieważ zależy ona od istniejącej konfiguracji i wyniku audytu.
| Scenariusz | Typowy zakres | Co zwiększa zakres |
|---|---|---|
| Mały | Standardowy Vite i kilka widoków | Zmiany utilities i porównanie podstron |
| Średni | Motyw WordPress i szablony PHP | Ścieżki `@source`, pluginy i checkout |
| Złożony | Kilka bundlerów lub wspólne biblioteki | Zależności zewnętrzne i różne środowiska |
Przed estymacją zmapuj szablony, integracje i stany komponentów, które muszą zachować wygląd. Ustal, czy zakres obejmuje tylko build CSS, czy również klasy dynamiczne, zmianę wspieranych przeglądarek i testy stagingowe. Przy rozwoju lub utrzymaniu samej witryny WordPress sprawdź, czy oferta WordPressa odpowiada zakresowi opieki technicznej potrzebnemu po migracji.
Więcej poradników w tym temacie
Wspomniane narzędzia
Najczęściej zadawane pytania
Czym różni się Tailwind CSS v4 od Tailwind CSS 3?
Jak zaktualizować projekt z Tailwind v3 do v4?
Czy Tailwind CSS v4 działa z WordPressem i WooCommerce?
Dlaczego po migracji do Tailwind v4 nie działają niektóre klasy?
Czy Tailwind CSS 4 wymaga zmiany konfiguracji PostCSS?
Jak sprawdzić, czy Tailwind v4 obejmuje pliki motywu WordPress?
Potrzebujesz pomocy w tym temacie?
Czytasz poradnik „Tailwind CSS v4: jak przejść z v3 i uniknąć problemów”. Napisz, co chcesz zrobić i na jakim etapie jesteś. Ustalimy, czy możemy pomóc i jaki zakres prac będzie potrzebny.
