Directiva @source
@source se află în intrarea CSS. Formele sale inline() adaugă sau elimină candidați de clase și funcționează peste tot. Formele sale cu căi indică fișierele șablon care trebuie scanate pentru nume de clase; doar CLI scanează fișierele și, deocamdată, nu aplică căile furnizate (consultați Cum sunt folosite căile).
@import "tailwindcss";
@source "./templates";
Directivele @source sunt citite în timpul compilării și eliminate din rezultat — nu apar niciodată în CSS generat. Căile trebuie puse între ghilimele; sunt acceptate atât ghilimelele simple, cât și cele duble.
Căi, globuri și negare
Forma cu cale acceptă un director, un glob sau o cale negată, iar directivele se acumulează:
@source "./templates"; /* a directory */
@source "./components/**/*.php"; /* a glob */
@source not "./templates/legacy"; /* an exclusion */
Cum sunt folosite căile
Compilatorul înregistrează fiecare directivă de cale în lista sources a tabloului returnat de TailwindPHP\compile(), ca ['base' => …, 'pattern' => …, 'negated' => …] cu base preluat din opțiunea de compilare base. Nu citește niciodată fișierele.
tw::generate(),tw::compile()șiTailwindCompilercompilează doar conținutul transmis. Directivele de cale nu au niciun efect aici.- CLI citește
sources, dar în versiunea curentă scanează recursiv directorul fișierului de intrare pentru fiecare cale nenegată, indiferent de ce indică acea cale sau glob, și ignoră complet căilenot, deci acestea nu exclud nimic (#8). Ce scanează CLI oferă detalii și o structură care funcționează în prezent.
Candidați în linie
@source inline(...) forțează includerea claselor în rezultat chiar dacă nu apar niciodată în fișierele scanate — util pentru nume de clase asamblate dinamic în timpul execuției:
@source inline("flex p-4 m-2");
Șabloanele de candidați în linie acceptă și variante:
@source inline("hover:bg-blue-500 focus:ring-2");
Extinderea acoladelor
Șabloanele în linie extind grupurile dintre acolade, astfel încât puteți enumera compact mulți candidați:
@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 */
Candidați în linie ignorați
@source not inline(...) face opusul lui inline() — elimină din rezultat candidații care corespund, chiar dacă au fost găsiți în conținutul dvs. Funcționează și extinderea acoladelor:
@source not inline("legacy");
@source not inline("p-{1,2}");
Reguli de validare
@source este o instrucțiune, nu un bloc. Compilatorul respinge:
- O directivă cu corp —
@source cannot have a body. - O directivă imbricată (de exemplu, în interiorul lui
@media) —@source cannot be nested. - O cale fără ghilimele —
@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;
Consultați CLI pentru compilări bazate pe fișiere și Importuri pentru rezolvarea lui @import și a modulelor virtuale.