카테고리 없음
vite-plugin-svgr로 아이콘 화면에 보여주기
합주기
2024. 6. 18. 00:43
img 태그로 svg 아이콘을 화면에 보여준다면 여러 제약사항이 많다.
1. 색상이나 크기를 동적으로 변경이 어렵다.
2. 너비, 높이 외에는 속성을 변경할 수 없다.
따라서 다른 방법을 찾아야 했는데 지금 사용하는 vite의 vite-plugin-svgr를 사용하기로 결정했다.
svgr의 장점은 다음과 같다.
1. 색상, 크기를 동적으로 변경하기 쉽다.
2. react-icons 처럼 <GoogleIcon/> 으로 가져올 수 있어 가독성이 향상된다.
우선 설치한다.
npm install --save-dev vite-plugin-svgr
초기 설정해야하는 부분이 있는데
우선 vite 환경설정 파일인 vite.config.js에 svgr를 추가해준다.
// vite.config.js
import svgr from "vite-plugin-svgr";
export default {
// ...
plugins: [svgr()], // 옵션은 아래에서 설정
};
만약 타입스크립트를 사용한다면 "타입 추론을 위한 선언 헬퍼"를 제공하는데 vite-env.d.ts에 아래와 같이 작성한다.
⭐ 타입스크립트를 사용하는 사람은 필수이니 꼭 까먹지 말기
/// <reference types="vite-plugin-svgr/client" />
svgr()함수의 옵션을 설정하기 위해 다시 vite.config.js 파일로 돌아와서 아래와 같이 추가한다.
// vite.config.js
import svgr from "vite-plugin-svgr";
export default {
// ...
plugins: [
svgr({
// A minimatch pattern, or array of patterns, which specifies the files in the build the plugin should include.
include: "**/*.svg?react"
})
],
};
빌드 과정에서 svgr 플러그인이 포함해야하는 파일들의 패턴 또는 패턴배열을 등록하는 것이다.
- 빌드 도구가 소스 파일을 처리하면서 SVG 파일을 만난다.
- SVGR 플러그인이 작동하여 SVG 파일을 React 컴포넌트로 변환한다. ex) icon.svg -> Icon.jsx
이렇게 하면 초기설정이 끝난다.
사용할 때는 아래와 같이 사용하면 된다.
📦assets
┗ 📂images
┃ ┣ 📜googleIcon.svg
┃ ┣ 📜kakaoIcon.svg
┃ ┗ 📜naverIcon.svg
import NaverSVG from "@/assets/images/naverIcon.svg?react";
<NaverSVG/>
마치 react-icons를 사용할 때와 같은 모양으로 사용할 수 있어서 편리하다!
참고