오늘의 주제는 v4가 중요한 부분이기에, 이 부분에 관해선 간단히 짚겠다.
이 정도의 이유가 떠오르는데, 장점만 적힌 위 내용과는 다르게 단점도 존재한다.
물론 단점이 치명적이지 않고, 장점이 갖는 영향력이 더 크기에 선택하였다.
기존 v3와 비교했을 때, 개선된 부분들 위주로 간결히 체크해보았다.
이외에도 많은 확장성과, 변수 활용의 변경된 문법, 일부 제거된 요소들이 있으니
문서를 참고하면 좋을 듯하다.
shadcn/ui의 문서를 먼저 보는 것을 추천한다.
pnpm create vite
◇ Project name:
│ vite-react
│
◇ Select a framework:
│ React
│
◇ Select a variant:
│ TypeScript
pnpm add tailwindcss @tailwindcss/vite
import tailwindcss from '@tailwindcss/vite';
import react from '@vitejs/plugin-react';
import { defineConfig } from 'vite';
// https://vite.dev/config/
export default defineConfig({
plugins: [react(), tailwindcss()],
});
main.tsx에 import 하는 것과, html 파일에서 사용하는 것의 명확한 차이는 모르겠음
기회가 되면 나중에 분석해보는 걸로
@import "tailwindcss"; 추가@import "tailwindcss";
...이제 기본적인 세팅은 완료되어, className을 입력하면 잘 적용되는 것을 확인할 수 있다.
여기까지는 Tailwind CSS의 공식 문서를 참고하면 아주 간단하게 진행할 수 있다.
기존 Tailwind CSS v3의 경우, tailwind.config.ts에서 config를 통한 관리를 했다.
const config = {
darkMode: ['class'],
content: ['./pages/**/*.{ts,tsx}', './components/**/*.{ts,tsx}', './app/**/*.{ts,tsx}', './src/**/*.{ts,tsx}'],
prefix: '',
theme: {
container: {
center: true,
padding: '2rem',
screens: {
'2xl': '1400px',
},
},
extend: {
zIndex: {
'70': '70',
},
screens: {
xs: '480px',
},
colors: {
black: {
DEFAULT: 'hsl(var(--color-black))',
'02': 'hsl(var(--color-black-02))',
'03': 'hsl(var(--color-black-03))',
},
white: 'hsl(var(--color-white))',
stroke: 'hsl(var(--stroke))',
border: 'hsl(var(--border))',
turquoise: 'hsl(var(--color-turquoise))',
error: {
DEFAULT: 'hsl(var(--color-error))',
'01': 'var(--color-error-01)',
'02': 'hsl(var(--color-error-02))',
},
gray: {
DEFAULT: 'hsl(var(--color-gray))',
'01': 'hsl(var(--color-gray-01))',
'02': 'hsl(var(--color-gray-02))',
},
...위 경우, 테마 변수에 지정한 컬러를 css 변수로 사용하면, css 파일에서 스타일 변수 또한 지정해야 했다.
v4는, tailwind.confg가 존재하지 않고, css 파일에서 @theme 을 통해 모두 처리하면 된다.
이때, css 컬러 변수를 별도로 생성하지 않아도 자동으로 적용된다.
Tailwind CSS v4는 oklch 컬러 팔레트를 권장한다.
@import 'tailwindcss';
@theme {
--color-mint-500: oklch(0.72 0.11 178);
--color-banana: oklch(0.95 0.05 100);
}
body {
color: var(--color-mint-500);
}
...
function App() {
return (
<main className='flex flex-col items-center justify-center w-screen h-screen'>
<h1 className='underline text-banana bg-mint-500'>Banana</h1>
<p>mint chocolate</p>
</main>
);
}
export default App;

이 과정을 통해서, 간단히 테마 변수를 설정할 수 있다.
설정할 일이 없어 따로 눈에 띄게 작성하진 않았지만, 간단히 언급하자면
여기까지 봤을 때, 기존 버전에 비해 초기 설정이 간결해진 것을 알 수 있다.
좀 더 편하게, Tailwind CSS의 세팅을 할 수 있게 되었고, 좀 사용해봐야 알겠지만 실제 사용성이나 확장성도 기대해볼 만하다.
뒤늦게서야 작성하는 이 글의 목적은 아래와 같다.
이후엔 좀 더 사용을 하면서, 추가된 기능이나 확장과 관련하여 추가적으로 포스팅하려 한다.
조금 뜬금없을 수 있지만 글 하단에 민트초코 실행화면 이미지 너무 예쁜데요...?
요즘엔 AI도 기본을 tailwind로 작성해주는 것 같더라구요. shadcn도 많이 보이구요!! 정리해주셔서 덕분에 업데이트 내용 한번 더 확인할 수 있었어요! 감사합니다 :)
동적 유틸리티... 반드시 필요했는데... v4에서 개선된 점이 굉장히 많은거 같아요! 회사 차세대 프로젝트에 테일윈드 버전 업그레이드를 제안해보겠습니다!
최근에 회사에서 새로운 관리자 페이지 구축을 위해서 여러css와 ui라이브러리를 찾아보았는데 돌고돌아 tailwind기반 DaisyUI를 채택 했었어요. 역시 tailwind가 익숙하고 편리한게 있는거같아요 .
동적 유틸리티 너무 편할 것 같아요 ㄷㄷ