Skip to main content

Design System Intro #20

기술적 고려사항

CSS 격리가 필요한가?

📕 목적
디자인 시스템 컴포넌트를 제작하면 여러 프로젝트에 온보딩 된다.

  • 각 프로젝트에서 css 충돌이 발생하지 않게 고려해야 한다.

📕 CSS격리 ( Tailwind CSS 기준 )

CSS 격리란?

  • prefix classname을 붙이는 등의 방법으로 브라우저 내 CSS간의 충돌을 회피한다.
  • 특히나 마이크로 프론트앱 환경에서 발생할 가능성이 높으며, 반드시 고려해야 하는 사항이다.
@tailwind base; // TailwindCSS에서 제공해주는 normalize.css 이다.  
@tailwind components; // 컴포넌트 클래스, my-button-primary 등
@tailwind utilities; // 유틸리티 클래스 text-gray-500 등

1.base css의 격리

Option1. 라이브러리 컴파일 단계 > normalize css 제외하기

Option2. 라이브러리 컴파일 단계 > preflight 에 prefix className 붙이기

Option3. 호스트 프로젝트 컴파일 단계 > postcss로 격리하기

  • 마이크로 프론트 엔드 환경이면 상황이 복잡하다.
  • 모듈 의존성 : Container App <-- Host App <-- Tailwind CSS UI Lib
    • Container App 에서 이미 global normalize css 가 있을 가능성이 높다.
    • Host app에서 CSS 컴파일 격리를 수행해야 한다.
  • 방법 : postcss-prefix-selector
  • 단점 : Antd 처럼 이미 prefix가 붙은 경우도 재격리 될 수 있음.

단일 프로젝트의 경우 : 마이크로 프론트엔드의 경우 :