오늘의 주제는 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의 세팅을 할 수 있게 되었고, 좀 사용해봐야 알겠지만 실제 사용성이나 확장성도 기대해볼 만하다.
뒤늦게서야 작성하는 이 글의 목적은 아래와 같다.
이후엔 좀 더 사용을 하면서, 추가된 기능이나 확장과 관련하여 추가적으로 포스팅하려 한다.