@source 지시문
@source는 입력 CSS에 작성합니다. inline() 형식은 클래스 후보를 추가하거나 제거하며 어디서나 사용할 수 있습니다. 경로 형식은 클래스 이름을 스캔할 템플릿 파일을 지정합니다. CLI형식만 파일을 스캔하며, 현재는 지정한 경로를 적용하지 않습니다(경로 사용 방법 참고).
@import "tailwindcss";
@source "./templates";
@source 지시문은 컴파일 중에 읽힌 뒤 출력에서 제거되므로 생성된 CSS에는 나타나지 않습니다. 경로는 따옴표로 묶어야 하며 작은따옴표와 큰따옴표를 모두 사용할 수 있습니다.
경로, 글로브 및 제외
경로 형식에는 디렉터리, 글로브 또는 제외할 경로를 사용할 수 있으며, 지시문은 누적 적용됩니다:
@source "./templates"; /* a directory */
@source "./components/**/*.php"; /* a glob */
@source not "./templates/legacy"; /* an exclusion */
경로 사용 방법
컴파일러는 모든 경로 지시문을 TailwindPHP\compile()가 반환하는 배열의 sources 목록에 ['base' => …, 'pattern' => …, 'negated' => …]로 기록합니다. 여기서 base 값은 base 컴파일 옵션에서 가져옵니다. 컴파일러가 직접 파일을 읽지는 않습니다.
tw::generate(),tw::compile(),TailwindCompiler는 전달한 콘텐츠만 컴파일합니다. 경로 지시문은 영향을 주지 않습니다.- CLI형식은
sources을 읽지만, 현재 릴리스에서는 경로나 글로브의 지정 내용과 관계없이 입력 파일의 디렉터리를 재귀적으로 스캔해 제외가 아닌 모든 경로를 처리하고not경로는 완전히 건너뛰므로 아무것도 제외하지 않습니다(#8). CLI에서 스캔하는 항목에 현재 사용할 수 있는 디렉터리 구조와 자세한 내용이 나와 있습니다.
인라인 후보
@source inline(...)는 스캔한 파일에 나타나지 않는 클래스도 출력에 강제로 포함합니다. 런타임에 동적으로 조합되는 클래스 이름에 유용합니다:
@source inline("flex p-4 m-2");
인라인 후보는 변형도 지원합니다:
@source inline("hover:bg-blue-500 focus:ring-2");
중괄호 확장
인라인 패턴은 중괄호 그룹을 확장하므로 많은 후보를 간결하게 나열할 수 있습니다:
@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 */
무시할 인라인 후보
@source not inline(...)는 inline()와 반대로 작동합니다. 콘텐츠에서 발견된 경우에도 일치하는 후보를 출력에서 제거합니다. 여기서도 중괄호 확장을 사용할 수 있습니다:
@source not inline("legacy");
@source not inline("p-{1,2}");
검증 규칙
@source는 블록이 아니라 문장입니다. 컴파일러는 다음을 거부합니다:
- 본문이 있는 지시문 —
@source cannot have a body. - 중첩된 지시문(예:
@media내부) —@source cannot be nested. - 따옴표로 묶이지 않은 경로 —
@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;