Tool

Tailwind CSS와 함께 사용하면 좋은 도구 모음

조건부로 className 문자열을 구성하기 위한 도구

  • props에 따라 동적으로 달라지는 스타일을 설정하기 위해 사용되는 도구로 classnamesclsx 가 있다.

  • clsxclassnames 보다 더 가볍고 동일한 기능을 제공한다.

Install

yarn add clsx

className과 props를 연결하고 이와 관련한 타입을 수동으로 추가하고 관리하는 작업을 단순화하며, 스키마를 통해 코드의 일관성을 유지할 수 있도록 도움을 주는 도구

circle-exclamation

Install

yarn add class-variance-authority

Reference

const componentVariant = cva(base, options);
  • base → 컴포넌트에 적용되는 기본적인 스타일 클래스 문자열

    • string, string[], 또는 clsx 값으로 표현될 수 있다.

  • options (optional)

    • variants → 컴포넌트에 적용되는 다양한 상태나 스타일의 변형을 정의

    • compoundVaraints → variants에 정의된 값들의 조합(AND 연산)을 기반으로 새로운 varaints를 추가하는 기능

    • defaultvariants → variants에 정의한 값들의 기본값을 설정

circle-info

cva에서 제공하는 VariantProps를 사용하면 정의한 variants를 타입으로 추출하여 사용 가능하다.

circle-exclamation

Usage

cva를 사용하여 기존 코드를 리팩토링 해보고 비교해보자.

chevron-rightBeforehashtag

chevron-rightAfter (CVA 활용)hashtag
circle-info

props와 class를 연결하기 위해 추가되는 코드와 타입 선언이 깔끔하고 간결해졌다.

Tailwind-merge

클래스를 조합하고 중복을 피하여 스타일 충돌 이슈를 방지하고, 효율적으로 스타일을 정의하고 관리할 수 있도록 도와주는 도구

Install

Reference

  • twMerge → 여러 클래스들을 병합하는 유틸 함수, 중복된 클래스 충돌을 해결하고, 가장 마지막에 전달된 클래스를 유지한다.

  • twJointwMerge()와 달리 충돌을 해결하지 않는다. clsx와 비슷한 기능을 제공하고 사용법도 비슷하다. But 객체 인자는 지원하지 않음

Last updated