Dyrektywa @source
@source znajduje się w wejściowym CSS. Jej postacie dotyczące inline() dodają lub usuwają kandydatów na klasy i działają wszędzie. Postacie ścieżek wskazują pliki szablonów skanowane w poszukiwaniu nazw klas; pliki skanuje tylko CLI, który na razie nie stosuje podanych ścieżek (zobacz Jak używane są ścieżki).
@import "tailwindcss";
@source "./templates";
Dyrektywy @source są odczytywane podczas kompilacji i usuwane z wyniku — nigdy nie pojawiają się w wygenerowanym CSS. Ścieżki muszą być ujęte w cudzysłowy; akceptowane są zarówno pojedyncze, jak i podwójne.
Ścieżki, wzorce glob i negacja
Postać ścieżki obsługuje katalog, wzorzec glob lub ścieżkę z negacją, a dyrektywy są kumulowane:
@source "./templates"; /* a directory */
@source "./components/**/*.php"; /* a glob */
@source not "./templates/legacy"; /* an exclusion */
Jak używane są ścieżki
Kompilator zapisuje każdą dyrektywę ścieżki na liście sources tablicy zwracanej przez TailwindPHP\compile() jako ['base' => …, 'pattern' => …, 'negated' => …], której base pochodzi z opcji kompilacji base. Sam nie odczytuje plików.
tw::generate(),tw::compile()iTailwindCompilerkompilują tylko przekazaną treść. Dyrektywy ścieżek nie mają tu wpływu.- CLI odczytuje
sources, ale w bieżącej wersji rekurencyjnie skanuje katalog pliku wejściowego pod kątem każdej ścieżki bez negacji, niezależnie od ścieżki lub wzorca glob, i całkowicie pomija ścieżkinot, więc niczego nie wykluczają (#8). Szczegóły i układ działający obecnie opisano w sekcji Co skanuje CLI.
Kandydaci wbudowani
@source inline(...) wymusza dodanie klas do wyniku, nawet jeśli nie występują w skanowanych plikach — przydatne w przypadku nazw klas tworzonych dynamicznie w czasie działania programu:
@source inline("flex p-4 m-2");
Kandydaci wbudowani obsługują również warianty:
@source inline("hover:bg-blue-500 focus:ring-2");
Rozwijanie nawiasów klamrowych
Wzorce wbudowane rozwijają grupy w nawiasach klamrowych, dzięki czemu można zwięźle wyliczyć wiele kandydatów:
@source inline("p-{1,2,4}");
/* Generates p-1, p-2, and p-4 */
@source inline("text-{red,blue}-500");
/* Generates text-red-500 and text-blue-500 */
Ignorowani kandydaci wbudowani
@source not inline(...) działa odwrotnie niż inline() — usuwa pasujących kandydatów z wyniku, nawet jeśli znaleziono ich w treści. Tutaj także działa rozwijanie nawiasów klamrowych:
@source not inline("legacy");
@source not inline("p-{1,2}");
Zasady walidacji
@source jest instrukcją, a nie blokiem. Kompilator odrzuca:
- Dyrektywę z treścią —
@source cannot have a body. - Zagnieżdżoną dyrektywę (na przykład wewnątrz
@media) —@source cannot be nested. - Nieujęta w cudzysłowy ścieżkę —
@source paths must be quoted.
/* Invalid — throws "`@source` cannot have a body." */
@source "./src" {
.some-style { color: red; }
}
/* Invalid — throws "`@source` paths must be quoted." */
@source ./src;
Informacje o kompilacjach opartych na plikach znajdziesz w sekcji CLI, a o rozpoznawaniu @import i modułów wirtualnych — w sekcji Importy.