DevLog

엔지니어링 블로그를 한 곳에서 탐색하고, 최근 발행 흐름을 빠르게 파악할 수 있는 서비스 입니다.

Quick Links

  • Latest Feed
  • Engineering Directory

Support

  • 소개
  • 개인정보처리방침

Contribute

  • 원하는 블로그 추가 (준비 중)
  • Feedback

© 2026 DevLog Inc. All rights reserved.

본 사이트는 공개 RSS 피드를 통해 콘텐츠를 수집하며, 모든 콘텐츠의 저작권은 원저작자에게 있습니다.

Back to Feed
Read Original

Contents

Continue Reading

  • More from 여기어때
  • Related reads#TailwindCSS
#Frontend

항공 프론트엔드 구축기 (3/10): prefix를 붙이자 tailwind-merge가 조용히 깨졌다

항공 프론트엔드 구축기 (3/10): prefix를 붙이자 tailwind-merge가 조용히 깨졌다
01

Summary

Tailwind에 Prefix 세 글자 붙였을 뿐인데... 조용히 깨져버린 tailwind-merge 구출기

에러 없이 스타일만 망가지던 지옥의 디버깅에서 tailwind-merge 내부 메커니즘을 파악해 우아하게 해결하는 법

라이브러리 스타일 격리를 위해 Tailwind CSS에 prefix를 도입했다가 tailwind-merge의 병합 기능이 깨지며 발생한 문제를 심도 있게 다룹니다. 기존 1세대의 불안정한 문자열 치환 우회 방식을 극복하고, tailwind-merge가 클래스를 분류하는 원리를 파악하여 직접 제어하는 2세대 해법을 상세한 코드와 함께 공유합니다.

  • 01디자인 시스템 격리를 위한 Tailwind prefix 도입과 이로 인한 tailwind-merge의 조용한 실패 원인 규명
  • 02기존 1세대 방식(prefix 제거 후 재부착)의 무차별 치환 오류, 잦은 문자열 조작으로 인한 오버헤드 등 한계점 명확화
  • 03tailwind-merge의 핵심 설계 모델인 classGroups와 conflictingClassGroups의 역할 분담 이해
  • 04접두사는 같으나 CSS 속성이 다른 text-ellipsis, border 등의 예외 케이스를 우선순위 기반으로 올바르게 분기하는 방법 제시
  • 05padding(p, px, py)과 rounded 모서리 간의 단방향 충돌 및 상속 관계를 직접 매핑하여 해결한 상세 노하우 공유

+RECOMMENDATION

Tailwind 기반의 공용 컴포넌트 라이브러리를 배포하거나, 다중 패키지 환경에서 스타일 오버라이딩 충돌 이슈로 골머리를 앓고 있는 프론트엔드 개발자들에게 정독을 추천합니다.

The Problem

공용 컴포넌트 라이브러리의 스타일 격리를 위해 Tailwind CSS에 prefix('yf-')를 적용했으나, 스타일 덮어쓰기를 처리하는 tailwind-merge가 해당 prefix 클래스를 인식하지 못해 스타일 충돌이 해결되지 않고 어긋나는 문제가 발생했습니다.

The Solution

tailwind-merge의 내부 작동 방식인 classGroups와 conflictingClassGroups 설정을 활용하여 prefix가 적용된 클래스들을 직접 등록하고, text-ellipsis나 padding처럼 속성이 충돌하는 세부 그룹 간의 우선순위를 재정의하였습니다.

The Result

문자열 치환 등의 임시방편 없이 커스텀 유틸리티와 prefix 스타일의 충돌을 완벽하게 해결했으며, 컴포넌트에서는 템플릿 태그를 통해 설정을 신경 쓰지 않고 단순하게 사용할 수 있게 되었습니다.

Trade-off

새로운 Tailwind 유틸리티나 소수점 임의값을 사용할 때마다 수동으로 classGroups를 최신화해야 하는 유지보수 공수가 수반되며, 이를 자동으로 생성할 수 있는 완벽한 해결책은 아직 확보하지 못했습니다.

03

Key Concepts

Concept · 01

tailwind-merge

Tailwind CSS에서 동일한 CSS 속성을 제어하는 중복 클래스가 선언되었을 때, 마지막에 위치한 클래스가 최종 적용되도록 충돌을 분석하고 걸러내 주는 자바스크립트 라이브러리입니다.

  • prefix가 적용된 커스텀 클래스를 인식하지 못해 오버라이딩 실패를 유발하는 분석 대상이 되었습니다.
Concept · 02

classGroups

tailwind-merge가 특정 스타일 클래스를 어떤 CSS 기능적 범주(예: 배경색, 패딩 등)로 묶어서 식별할지 결정하는 내부 매핑 설정 테이블입니다.

  • prefix가 붙은 모든 개별 유틸리티 키(yf-bg, yf-p 등)를 하나의 유효한 그룹으로 등록하기 위해 활용되었습니다.
  • 텍스트 정렬, 오버플로우, 크기 등이 yf-text 접두어로 오인되어 합쳐지지 않도록 세부 그룹으로 쪼개서 등록했습니다.
Concept · 03

conflictingClassGroups

서로 다른 스타일 그룹 간에 우선순위를 비교하여, 한 그룹이 선언되었을 때 하위 호환 관계에 있는 다른 그룹의 스타일을 지울지 결정하는 충돌 해소용 설정입니다.

  • 전체 패딩(p)이 가로 패딩(px)을 지울 수 있지만, 가로 패딩이 전체 패딩을 지우지는 못하게 만드는 단방향 캐스케이딩 관계를 매핑하는 데 사용되었습니다.
Continue reading · same source

여기어때More from 여기어때

View all posts from 여기어때
  • EKS 컨테이너 메모리 스파이크 추적기

    EKSPage CacheLogback
    2일 전
  • SRE 업무에 AI 녹여내기 — 2편: Alert Adviser로 장애 원인 분석 자동화

    GrafanaMCPSlack Bot
    6일 전
  • SRE 업무에 AI 녹여내기 — 1편: Smart RI Calc로 인프라 비용 산정 자동화

    SREAWS KarpenterCost Estimation
    6일 전
  • WebFlux 전환 부하 테스트를 다시 쓴 이야기

    WebFluxSpring BootLoad Testing
    1주 전
  • 데드락을 해결하려다, 락을 줄이게 된 이야기

    MySQL InnoDBDeadlockPessimistic Lock
    1주 전

Related reads#TailwindCSS

Explore #TailwindCSS
여기어때·Next.js

항공 프론트엔드 구축기 (1/10): 웹, 모바일웹, 웹뷰를 코드 한 벌로

#TailwindCSS3주 전

Source

여기어때
여기어때
Engineering Blog

Published · August 7, 2026

Topics

Tailwind CSStailwind-mergeCSS UtilityFrontend Styling