Tool

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

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

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

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

Install

yarn add clsx

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

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에 정의한 값들의 기본값을 설정

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

Usage

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

Before

After (CVA 활용)

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

Tailwind-merge

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

Install

Reference

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

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

Last updated