본문으로 건너뛰기

@source 지시문

@source는 입력 CSS에 작성합니다. inline() 형식은 클래스 후보를 추가하거나 제거하며 어디서나 사용할 수 있습니다. 경로 형식은 클래스 이름을 스캔할 템플릿 파일을 지정합니다. CLI형식만 파일을 스캔하며, 현재는 지정한 경로를 적용하지 않습니다(경로 사용 방법 참고).

CSS
@import "tailwindcss";
@source "./templates";

@source 지시문은 컴파일 중에 읽힌 뒤 출력에서 제거되므로 생성된 CSS에는 나타나지 않습니다. 경로는 따옴표로 묶어야 하며 작은따옴표와 큰따옴표를 모두 사용할 수 있습니다.

경로, 글로브 및 제외

경로 형식에는 디렉터리, 글로브 또는 제외할 경로를 사용할 수 있으며, 지시문은 누적 적용됩니다:

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(...)는 스캔한 파일에 나타나지 않는 클래스도 출력에 강제로 포함합니다. 런타임에 동적으로 조합되는 클래스 이름에 유용합니다:

CSS
@source inline("flex p-4 m-2");

인라인 후보는 변형도 지원합니다:

CSS
@source inline("hover:bg-blue-500 focus:ring-2");

중괄호 확장

인라인 패턴은 중괄호 그룹을 확장하므로 많은 후보를 간결하게 나열할 수 있습니다:

CSS
@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()와 반대로 작동합니다. 콘텐츠에서 발견된 경우에도 일치하는 후보를 출력에서 제거합니다. 여기서도 중괄호 확장을 사용할 수 있습니다:

CSS
@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.
CSS
/* Invalid — throws "`@source` cannot have a body." */
@source "./src" {
    .some-style { color: red; }
}

/* Invalid — throws "`@source` paths must be quoted." */
@source ./src;

파일 기반 빌드는 CLI안내를, @import 및 가상 모듈 확인은 가져오기를 참고하세요.