Tool
Tailwind CSS와 함께 사용하면 좋은 도구 모음
조건부로 className 문자열을 구성하기 위한 도구
props에 따라 동적으로 달라지는 스타일을 설정하기 위해 사용되는 도구로
classnames
와clsx
가 있다.clsx
는classnames
보다 더 가볍고 동일한 기능을 제공한다.
Install
yarn add clsx
className과 props를 연결하고 이와 관련한 타입을 수동으로 추가하고 관리하는 작업을 단순화하며, 스키마를 통해 코드의 일관성을 유지할 수 있도록 도움을 주는 도구
cva
는 내부적으로 clsx
를 사용하며, cx
함수를 제공하여 clsx
와 유사한 기능을 제공한다.
하지만 "cva"는 "classValue" 타입을 제공하지 않아서 현재 두 개의 패키지를 동시에 사용해야 하는 상황이다.
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에 정의한 값들의 기본값을 설정
Usage
cva를 사용하여 기존 코드를 리팩토링 해보고 비교해보자.
Tailwind-merge
클래스를 조합하고 중복을 피하여 스타일 충돌 이슈를 방지하고, 효율적으로 스타일을 정의하고 관리할 수 있도록 도와주는 도구
Install
yarn add tailwind-merge
Reference
twMerge
→ 여러 클래스들을 병합하는 유틸 함수, 중복된 클래스 충돌을 해결하고, 가장 마지막에 전달된 클래스를 유지한다.twJoin
→twMerge()
와 달리 충돌을 해결하지 않는다. clsx와 비슷한 기능을 제공하고 사용법도 비슷하다. But 객체 인자는 지원하지 않음
Last updated