이미 생성된 보일러플레이트를 사용하는 경우:
# 프로젝트 클론
git clone [repository-url]
cd react-tailwind-dashboard
# 의존성 설치
bun install
# 개발 서버 실행
bun dev
curl -fsSL https://bun.sh/install | bash
bun --version
bun create vite react-tailwind-dashboard -- --template react-ts
cd react-tailwind-dashboard
# 기본 의존성 설치
bun install
# TailwindCSS 관련 패키지 설치
bun add -d tailwindcss postcss autoprefixer prettier
# 추가 패키지 설치
bun add @headlessui/react @heroicons/react react-router-dom chart.js react-chartjs-2
npx tailwindcss init -p
tailwind.config.js:
/** @type {import('tailwindcss').Config} */
export default {
content: ['./index.html', './src/**/*.{js,ts,jsx,tsx}'],
theme: {
extend: {
colors: {
primary: '#1E293B',
secondary: '#64748B',
},
},
},
plugins: [],
};
react-tailwind-dashboard/
├── src/
│ ├── components/
│ │ ├── charts/
│ │ └── ui/
│ ├── layouts/
│ │ └── DashboardLayout.tsx
│ ├── pages/
│ ├── App.tsx
│ └── main.tsx
├── public/
├── index.html
├── package.json
├── tailwind.config.js
├── postcss.config.js
├── tsconfig.json
└── vite.config.ts
접근성이 고려된 UI 컴포넌트 라이브러리로, TailwindCSS와 완벽하게 통합됩니다.
Tailwind CSS 팀이 제작한 SVG 아이콘 라이브러리입니다.
import { BeakerIcon } from '@heroicons/react/24/solid'
function Component() {
return <BeakerIcon className="h-6 w-6 text-blue-500" />
}
React 애플리케이션의 라우팅을 관리하는 표준 라이브러리입니다.
- chart.js: 반응형 차트 라이브러리
- react-chartjs-2: Chart.js의 React 래퍼
bun add <패키지명>
: 패키지 설치bun remove <패키지명>
: 패키지 제거bun install
: 모든 의존성 설치bun dev
: 개발 서버 실행bun run build
: 프로덕션 빌드
- 개발 서버는 기본적으로
http://localhost:5173
에서 실행됩니다. - Bun은 npm 대비 최대 25배 빠른 설치 속도를 제공합니다.
bun.lockb
파일은 바이너리 형식의 lockfile로, 더 빠른 파싱 속도를 제공합니다.
프로젝트는 세 가지 TypeScript 설정 파일을 사용하여 각 환경에 최적화된 설정을 제공합니다.
{
"compilerOptions": {
"target": "ES2020",
"lib": ["ES2020", "DOM", "DOM.Iterable"],
"module": "ESNext",
"skipLibCheck": true,
"moduleResolution": "bundler",
"jsx": "react-jsx",
"baseUrl": ".",
"paths": {
"@/*": ["src/*"]
}
},
"include": ["src"],
"references": [{ "path": "./tsconfig.node.json" }]
}
{
"compilerOptions": {
"composite": true,
"skipLibCheck": true,
"module": "ESNext",
"moduleResolution": "bundler"
},
"include": ["vite.config.ts"]
}
{
"extends": "./tsconfig.json",
"compilerOptions": {
"composite": true,
"baseUrl": ".",
"paths": {
"@/*": ["./src/*"]
}
},
"include": ["src/**/*.ts", "src/**/*.tsx"],
"exclude": ["src/**/*.spec.ts", "src/**/*.test.tsx"]
}
// eslint.config.js
import react from 'eslint-plugin-react';
export default tseslint.config({
languageOptions: {
parserOptions: {
project: ['./tsconfig.node.json', './tsconfig.app.json'],
tsconfigRootDir: import.meta.dirname,
},
},
settings: {
react: { version: '18.3' },
},
plugins: {
react,
},
rules: {
...react.configs.recommended.rules,
...react.configs['jsx-runtime'].rules,
},
});
프로젝트 루트에 .prettierrc 파일을 생성하여 기본 포맷팅 규칙을 설정합니다.
{
"tabWidth": 2,
"semi": true,
"singleQuote": true,
"trailingComma": "es5"
}
- ESLint
- Prettier
- Tailwind CSS IntelliSense
// .vscode/settings.json
{
"editor.formatOnSave": true,
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.codeActionsOnSave": {
"source.fixAll.eslint": true
}
}