Vite + Vue 3 프로젝트 빠른 시작 — 환경 설정부터 배포까지
프로젝트 생성
npm create vite@latest my-vue-app -- --template vue
cd my-vue-app
npm install
npm run dev
vite.config.ts 핵심 설정
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import { resolve } from 'path'
export default defineConfig({
plugins: [vue()],
// 경로 별칭 — @/components/Button.vue 처럼 사용
resolve: {
alias: {
'@': resolve(__dirname, 'src'),
},
},
// 개발 서버 설정
server: {
port: 3000,
open: true,
// API 프록시 — CORS 우회
proxy: {
'/api': {
target: 'http://localhost:8080',
changeOrigin: true,
rewrite: (path) => path.replace(/^\/api/, ''),
},
},
},
// 빌드 최적화
build: {
outDir: 'dist',
rollupOptions: {
output: {
manualChunks: {
vendor: ['vue', 'vue-router', 'pinia'],
},
},
},
},
})
환경 변수 설정
# .env
VITE_API_URL=http://localhost:8080
# .env.production
VITE_API_URL=https://api.myapp.com
// 사용
const apiUrl = import.meta.env.VITE_API_URL
VITE_접두사가 없는 변수는 클라이언트에 노출되지 않습니다.
절대 경로 import
vite.config.ts에 alias 설정 후:
// ❌ 상대 경로
import Button from '../../../components/Button.vue'
// ✅ 절대 경로
import Button from '@/components/Button.vue'
TypeScript 경로 인식 — tsconfig.json
{
"compilerOptions": {
"baseUrl": ".",
"paths": {
"@/*": ["src/*"]
}
}
}
빌드 결과 분석
npm install -D rollup-plugin-visualizer
// vite.config.ts
import { visualizer } from 'rollup-plugin-visualizer'
plugins: [
vue(),
visualizer({ open: true }) // 빌드 후 브라우저 자동 열림
]
자주 쓰는 명령어
npm run dev # 개발 서버 시작
npm run build # 프로덕션 빌드
npm run preview # 빌드 결과 미리보기