Quick Start
5분 안에 Vortex로 첫 컴포넌트를 만들어보세요!
시작하기 전에
다음 중 하나를 선택하세요:
- CLI로 새 프로젝트 생성 (권장) - 모든 설정이 자동으로 완료됩니다
- 기존 프로젝트에 추가 - 이미 React 프로젝트가 있는 경우
방법 1: CLI로 새 프로젝트 생성 (권장)
Vortex CLI를 사용하면 모든 설정이 자동으로 완료됩니다.
Foundation (기본)
# 프로젝트 생성
npx @vortex/cli init my-app --template vite --theme foundation
# 프로젝트 이동
cd my-app
# 개발 서버 실행
pnpm dev브라우저에서 http://localhost:5173을 열면 바로 동작하는 앱을 확인할 수 있습니다!
iCignal
npx @vortex/cli init my-icignal-app --template vite --theme icignal
cd my-icignal-app
pnpm devCals
npx @vortex/cli init my-cals-app --template vite --theme cals
cd my-cals-app
pnpm devCLI가 자동으로 설정하는 것들
- ✅ React 19 + Vite 7 + TypeScript 5
- ✅ Tailwind CSS 4.0 (@tailwindcss/postcss)
- ✅ Private npm registry (.npmrc)
- ✅ TypeScript path aliases (@/*)
- ✅ cn 유틸리티 함수
- ✅ 선택한 테마 패키지 (@vortex/ui-foundation, @vortex/ui-icignal, @vortex/ui-cals)
- ✅ 모든 의존성 자동 설치
방법 2: 기존 프로젝트에 추가
이미 React 프로젝트가 있다면 Vortex 컴포넌트를 추가할 수 있습니다.
1. Private Registry 설정
echo "registry=http://repo.calsplatz.com:4873" > .npmrc2. 패키지 설치
Foundation:
pnpm add @vortex/ui-foundationiCignal:
pnpm add @vortex/ui-foundation @vortex/ui-icignalCals:
pnpm add @vortex/ui-foundation @vortex/ui-cals3. Tailwind CSS 설정
pnpm add -D tailwindcss@next @tailwindcss/postcss@nextimport type { Config } from "tailwindcss";
export default {
content: ["./src/**/*.{js,ts,jsx,tsx,mdx}"],
theme: {
extend: {},
},
} satisfies Config;4. cn 유틸리티 함수 추가
import { clsx, type ClassValue } from "clsx";
import { twMerge } from "tailwind-merge";
export function cn(...inputs: ClassValue[]) {
return twMerge(clsx(inputs));
}첫 번째 컴포넌트 사용
Button 컴포넌트
import { Button } from "@vortex/ui-foundation";
export default function App() {
return (
<div className="p-8">
<h1 className="text-2xl font-bold mb-4">My Vortex App</h1>
<Button>Click me</Button>
</div>
);
}다양한 Variants
import { Button } from "@vortex/ui-foundation";
export default function App() {
return (
<div className="p-8 space-y-4">
<h1 className="text-2xl font-bold mb-4">Button Variants</h1>
<div className="space-x-2">
<Button variant="default">Default</Button>
<Button variant="secondary">Secondary</Button>
<Button variant="destructive">Destructive</Button>
<Button variant="outline">Outline</Button>
<Button variant="ghost">Ghost</Button>
<Button variant="link">Link</Button>
</div>
<div className="space-x-2">
<Button size="sm">Small</Button>
<Button size="default">Default</Button>
<Button size="lg">Large</Button>
</div>
</div>
);
}CLI로 컴포넌트 추가
Vortex CLI를 사용하면 필요한 컴포넌트를 프로젝트에 추가할 수 있습니다.
단일 컴포넌트 추가
npx @vortex/cli add button여러 컴포넌트 추가
npx @vortex/cli add button input card select컴포넌트 목록 확인
npx @vortex/cli list실전 예제
로그인 폼 만들기
import { Button } from "@vortex/ui-foundation";
import { Input } from "@vortex/ui-foundation";
import { Card } from "@vortex/ui-foundation";
export default function LoginForm() {
return (
<Card className="w-full max-w-md p-6">
<h2 className="text-2xl font-bold mb-6">로그인</h2>
<form className="space-y-4">
<div>
<label className="block text-sm font-medium mb-2">이메일</label>
<Input type="email" placeholder="you@example.com" />
</div>
<div>
<label className="block text-sm font-medium mb-2">비밀번호</label>
<Input type="password" placeholder="••••••••" />
</div>
<Button className="w-full">로그인</Button>
</form>
</Card>
);
}사용자 프로필 카드
import { Card } from "@vortex/ui-foundation";
import { Button } from "@vortex/ui-foundation";
import { Badge } from "@vortex/ui-foundation";
export default function UserProfile() {
return (
<Card className="w-full max-w-sm p-6">
<div className="flex items-center space-x-4 mb-4">
<img src="/avatar.jpg" alt="User" className="w-16 h-16 rounded-full" />
<div>
<h3 className="font-semibold text-lg">홍길동</h3>
<p className="text-sm text-muted-foreground">hong@example.com</p>
</div>
</div>
<div className="space-y-2 mb-4">
<Badge>프론트엔드</Badge>
<Badge variant="secondary">React</Badge>
<Badge variant="outline">TypeScript</Badge>
</div>
<div className="flex gap-2">
<Button variant="outline" className="flex-1">
메시지
</Button>
<Button className="flex-1">팔로우</Button>
</div>
</Card>
);
}Next.js 프로젝트
1. Next.js 프로젝트 생성
pnpm create next-app@latest my-next-app --typescript --tailwind --app
cd my-next-app2. Private Registry 설정
echo "registry=http://repo.calsplatz.com:4873" > .npmrc3. Vortex 패키지 설치
pnpm add @vortex/ui-foundation4. 컴포넌트 사용
import { Button } from "@vortex/ui-foundation";
export default function Home() {
return (
<main className="flex min-h-screen flex-col items-center justify-center p-24">
<h1 className="text-4xl font-bold mb-8">Welcome to Vortex + Next.js</h1>
<Button>Get Started</Button>
</main>
);
}테마별 특화 기능
iCignal 전용 컴포넌트
import { Button } from "@vortex/ui-foundation";
import { IcignalCard } from "@vortex/ui-icignal";
export default function IcignalApp() {
return (
<IcignalCard className="bg-icignal-primary">
<h2>iCignal 전용 카드</h2>
<Button>Click me</Button>
</IcignalCard>
);
}Cals 전용 컴포넌트
import { Button } from "@vortex/ui-foundation";
import { CalsCard } from "@vortex/ui-cals";
export default function CalsApp() {
return (
<CalsCard className="bg-cals-primary">
<h2>Cals 전용 카드</h2>
<Button>Click me</Button>
</CalsCard>
);
}문제 해결
컴포넌트를 찾을 수 없습니다
증상: Cannot find module '@vortex/ui-foundation'
해결:
# .npmrc 파일 확인
cat .npmrc
# 패키지 재설치
pnpm install스타일이 적용되지 않습니다
증상: 컴포넌트가 스타일 없이 표시됨
해결:
/* globals.css 확인 */
@import "tailwindcss";TypeScript 경로 오류
증상: Cannot find module '@/...'
해결:
// tsconfig.json 확인
{
"compilerOptions": {
"baseUrl": ".",
"paths": {
"@/*": ["./src/*"]
}
}
}다음 단계
Last updated on