프로젝트

[프로젝트 회고] STDev 해커톤

dekoms 2025. 5. 5. 16:51

1. 피그마 SVG Export할 때는 Frame으로 감싸주고, 바로 밑에 하나의 벡터 이미지가 존재하도록.

 

2. Vite에서 SVG 사용할 때, 로컬에서는 잘 되는데 배포 환경에서 안되는 경우.

 

import { ReactComponent as Logo } from './logo.svg'; // 이건 CRA 방식

 

Vite는 기본적으로 CRA 방식을 지원하지 않으므로 vite-plugin-svgr를 설치해야 합니다.

npm install vite-plugin-svgr
// vite.config.ts or vite.config.js
import { defineConfig } from 'vite';
import svgr from 'vite-plugin-svgr';
import react from '@vitejs/plugin-react'; // React 프로젝트라면 이게 있어야 함

export default defineConfig({
  plugins: [react(), svgr()],
});

 

🔥 올바른 방법:

import { ReactComponent as Logo } from './logo.svg'; // ✅ CRA 스타일 지원하려면 설정 필요
// 또는
import Logo from './logo.svg?component'; // ✅ Vite 권장 방식

 

 

타입스크립트에서 오류

// src/images.d.ts (또는 types/svg.d.ts 등)
declare module '*.svg?component' {
  import * as React from 'react';
  const ReactComponent: React.FC<React.SVGProps<SVGSVGElement>>;
  export default ReactComponent;
}
declare module '*.svg?react' {
  import * as React from 'react';
  const ReactComponent: React.FC<React.SVGProps<SVGSVGElement>>;
  export default ReactComponent;
}

이 선언이 없다면 IDE나 TS 빌드에서 "모듈을 찾을 수 없습니다" 같은 오류가 납니다.

 

빌드 경로 확인

// vite.config.ts
export default defineConfig({
  base: '/', // 또는 '/your-repo-name/' if using GitHub Pages
});

 

정 안 될 경우 fallback

import logoUrl from './logo.svg?url';

<img src={logoUrl} alt="logo" />

SVG를 그냥 URL로 쓰고 싶다면 ?url을 붙이세요.