create-react-shadcn-app
Version:
CLI tool to create React applications with shadcn/ui components
198 lines (145 loc) β’ 5.81 kB
Markdown
# π create-react-shadcn-app
React + shadcn/ui μ ν리μΌμ΄μ
μ λΉ λ₯΄κ² μμ±νλ CLI λꡬ
## π¦ μ¬μ© κ°λ₯ν ν
νλ¦Ώ
### 1. π₯ React + Vite
**ν
νλ¦Ώλͺ
**: `react-vite`
λΉ λ₯Έ κ°λ°μ μν Viteμ νμ
μμ ν λΌμ°ν
μ μν TanStack Routerκ° ν¬ν¨λ νλμ μΈ React 보μΌλ¬νλ μ΄νΈμ
λλ€.
**κΈ°μ μ€ν**:
- React 19 + TypeScript
- Vite (λΉλ λꡬ)
- TanStack Router (νμ
μμ ν λΌμ°ν
)
- Tailwind CSS v4
- shadcn/ui μ»΄ν¬λνΈ
- Jotai (μν κ΄λ¦¬)
- TanStack Query (μλ² μν)
### 2. β‘ Next.js App Router
**ν
νλ¦Ώλͺ
**: `nextjs-app-router`
μλ² μ»΄ν¬λνΈμ μ€νΈλ¦¬λ°μ μ§μνλ νλμ μΈ App Routerλ₯Ό μ¬μ©ν Next.js 보μΌλ¬νλ μ΄νΈμ
λλ€.
**κΈ°μ μ€ν**:
- Next.js 15 + App Router
- TypeScript
- Tailwind CSS v4
- shadcn/ui μ»΄ν¬λνΈ
- Jotai (μν κ΄λ¦¬)
- TanStack Query (μλ² μν)
### 3. π Next.js Pages Router
**ν
νλ¦Ώλͺ
**: `nextjs-pages-router`
μ ν΅μ μΈ Pages Routerλ₯Ό μ¬μ©ν Next.js 보μΌλ¬νλ μ΄νΈμ
λλ€. κΈ°μ‘΄ νλ‘μ νΈλ νΉμ μꡬμ¬νμ΄ μλ κ²½μ°μ μ ν©ν©λλ€.
**κΈ°μ μ€ν**:
- Next.js 15 + Pages Router
- TypeScript
- Tailwind CSS v4
- shadcn/ui μ»΄ν¬λνΈ
- Jotai (μν κ΄λ¦¬)
- TanStack Query (μλ² μν)
## π λΉ λ₯Έ μμ
### npx μ¬μ© (κΆμ₯)
```bash
# React + Vite νλ‘μ νΈ μμ±
npx create-react-shadcn-app react-vite my-app
# Next.js App Router νλ‘μ νΈ μμ±
npx create-react-shadcn-app nextjs-app-router my-dashboard
# Next.js Pages Router νλ‘μ νΈ μμ±
npx create-react-shadcn-app nextjs-pages-router my-blog
```
### μ μ μ€μΉ ν μ¬μ©
```bash
# μ μ μ€μΉ
npm install -g create-react-shadcn-app
# νλ‘μ νΈ μμ±
create-react-shadcn-app react-vite my-app
create-react-shadcn-app nextjs-app-router my-dashboard
create-react-shadcn-app nextjs-pages-router my-blog
```
### degit μ¬μ© (λμ)
```bash
# ν
νλ¦Ώμ μ§μ 볡μ¬
npx degit im-ian/create-react-shadcn-app/packages/react-vite my-app
npx degit im-ian/create-react-shadcn-app/packages/nextjs-app-router my-dashboard
npx degit im-ian/create-react-shadcn-app/packages/nextjs-pages-router my-blog
# μμ‘΄μ± μ€μΉ λ° κ°λ° μλ² μμ
cd my-app
npm install
npm run dev
```
## π οΈ κ³΅ν΅ κΈ°λ₯
λͺ¨λ ν
νλ¦Ώμ ν¬ν¨λ κΈ°λ₯:
- β
**TypeScript** νμ
μμ μ±
- β
**Tailwind CSS v4** νλμ μΈ μ€νμΌλ§
- β
**shadcn/ui** Tailwind κΈ°λ°μ UI μ»΄ν¬λνΈ
- β
**Jotai** μμμ μν κ΄λ¦¬
- β
**TanStack Query** μλ² μν κ΄λ¦¬
- β
**ESLint** μ½λ νμ§ κ΄λ¦¬
- β
**λλ©μΈ κΈ°λ° ν΄λ ꡬ쑰**
- β
**νλμ μΈ κ°λ° λꡬ**
## π νλ‘μ νΈ κ΅¬μ‘°
κ° ν
νλ¦Ώμ μΌκ΄λ λλ©μΈ κΈ°λ° κ΅¬μ‘°λ₯Ό λ°λ¦
λλ€:
```
src/
βββ components/ # 곡μ /κ³΅ν΅ μ»΄ν¬λνΈ
β βββ ui/ # shadcn/ui μ»΄ν¬λνΈ
βββ domains/ # λλ©μΈ κΈ°λ° κ΅¬μ±
β βββ user/
β β βββ components/
β β βββ hooks/
β β βββ index.ts
β βββ product/
β βββ order/
βββ hooks/ # 곡μ ν
βββ lib/ # μ νΈλ¦¬ν° λ° μ€μ
βββ ... # νλ μμν¬λ³ νμΌ
```
## π― κ° ν
νλ¦Ώ μ¬μ© μκΈ°
### React + Vite
- **μ ν©ν μ©λ**: SPA, ν΄λΌμ΄μΈνΈ μ¬μ΄λ μ ν리μΌμ΄μ
, λΉ λ₯Έ νλ‘ν νμ΄ν
- **μ₯μ **: λΉ λ₯Έ κ°λ°, κ°λ¨ν λ°°ν¬, μμ ν ν΄λΌμ΄μΈνΈ μ¬μ΄λ μ μ΄
- **μ¬μ© μ¬λ‘**: λμ보λ, κ΄λ¦¬μ ν¨λ, μΈν°λν°λΈ μΉ μ±
### Next.js App Router
- **μ ν©ν μ©λ**: νμ€ν μ ν리μΌμ΄μ
, SEOκ° μ€μν μ¬μ΄νΈ, νλμ μΈ React ν¨ν΄
- **μ₯μ **: μλ² μ»΄ν¬λνΈ, μ€νΈλ¦¬λ°, λ΄μ₯ μ΅μ ν, SEO μΉνμ
- **μ¬μ© μ¬λ‘**: λ§μΌν
μ¬μ΄νΈ, μ΄μ»€λ¨Έμ€, λΈλ‘κ·Έ, 볡μ‘ν μΉ μ ν리μΌμ΄μ
### Next.js Pages Router
- **μ ν©ν μ©λ**: κΈ°μ‘΄ Next.js νλ‘μ νΈ, μ μ§μ λ§μ΄κ·Έλ μ΄μ
, νΉμ μꡬμ¬ν
- **μ₯μ **: μ±μν μνκ³, μ λ¬Έμνλ¨, μμ μ μΈ API
- **μ¬μ© μ¬λ‘**: λ κ±°μ νλ‘μ νΈ, νΉμ λΌμ°ν
μꡬμ¬ν, μ μ§μ λμ
## π§ 컀μ€ν°λ§μ΄μ§
### μ»΄ν¬λνΈ μΆκ°
λͺ¨λ ν
νλ¦Ώμ shadcn/uiλ₯Ό μ¬μ©ν©λλ€. μ μ»΄ν¬λνΈ μΆκ°:
```bash
npx shadcn@latest add [μ»΄ν¬λνΈλͺ
]
```
### μν κ΄λ¦¬
- **ν΄λΌμ΄μΈνΈ μν**: Jotai atoms μ¬μ©
- **μλ² μν**: TanStack Query μ¬μ©
- **νΌ μν**: react-hook-form (νμμ μΆκ°)
### μ€νμΌλ§
- `globals.css`μμ Tailwind CSS 컀μ€ν°λ§μ΄μ§
- shadcn/ui ν
λ§ λ³μ μμ
- `components/ui/`μ 컀μ€ν
μ»΄ν¬λνΈ μΆκ°
## π μ€ν¬λ¦½νΈ
κ° ν
νλ¦Ώμ ν¬ν¨λ κ³΅ν΅ μ€ν¬λ¦½νΈ:
```bash
npm run dev # κ°λ° μλ² μμ
npm run build # νλ‘λμ
λΉλ
npm run lint # ESLint μ€ν
npm run preview # νλ‘λμ
λΉλ 미리보기 (Viteλ§)
npm run start # νλ‘λμ
μλ² μμ (Next.jsλ§)
```
## π λ°°ν¬
### React + Vite
- **κΆμ₯**: Vercel, Netlify, GitHub Pages
- **λΉλ**: `npm run build` β `dist/` ν΄λ
### Next.js (App Router & Pages Router)
- **κΆμ₯**: Vercel (μ λ‘ μ€μ )
- **λμ**: Netlify, AWS, Docker
- **λΉλ**: `npm run build` β `.next/` ν΄λ
## π€ κΈ°μ¬νκΈ°
1. μ μ₯μ ν¬ν¬
2. κΈ°λ₯ λΈλμΉ μμ± (`git checkout -b feature/amazing-feature`)
3. λ³κ²½μ¬ν μ»€λ° (`git commit -m 'Add some amazing feature'`)
4. λΈλμΉμ νΈμ (`git push origin feature/amazing-feature`)
5. Pull Request μ΄κΈ°
## π λΌμ΄μ μ€
μ΄ νλ‘μ νΈλ MIT λΌμ΄μ μ€ νμ μμ΅λλ€.
---
**λΉ λ₯΄κ² μμνκ³ λ©μ§ μ±μ λ§λ€μ΄λ³΄μΈμ! π**