React] CRA에서 Vite로 마이그레이션 진행하기

2024. 9. 24. 18:09Devlog

1. 왜 Vite로 마이그레이션 할까?

 

2024.09.20 - [Devlog] - CRA(Create React App) vs Vite

 

CRA(Create React App) vs Vite

CRA(Create React App) vs Vite: 무엇이 더 나을까?    React 프로젝트를 시작할 때 대부분은 **CRA(Create React App)**을 사용해 봤을 것이다.나 역시도 CRA3번 Vite2번 정도 사용해 봤다. 하지만 이 역시 프로젝

whatever-ut.tistory.com

 

저번글에서 충분히 언급했기 때문에 바로 진행해 보겠다.

 

 

 

2. 마이그레이션 전 확인사항

 

 

Node.js 버전 확인
Vite는 최신 Node.js 버전이 필요하다. 현재 프로젝트에서 사용 중인 Node.js 버전이 Vite와 호환되는지

 먼저 확인해야 한다.

node -v

v20.16.0  나는 20.16.0 버전이다.
Node 14 버전 이상이면 된다.

 

 

그리고 npm과 yarn둘중 하나를 골라 설치해야 하는데, 결론적으로 나는 npm을 사용하기로 했다.

Npm vs Yarn은 나중에 기회 될 때 작성해보려고 한다.

(분량이 나올지는 의문)

 

 

 

 

 

3. CRA에서 Vite로 마이그레이션 하는 단계

 

 

1) CRA 의존성 제거

 

가장 먼저, CRA 관련 패키지를 삭제해야 한다. 아래 명령어를 사용해 react-scripts를 제거하면 된다.

npm uninstall react-scripts

 

항상 그렇지만 복사하기 편하게 $ << 편의상 뺀 것이다. bash 관련 명령어는 $을 앞에 붙이고 해야 한다.

 

 

 

 

2) Vite 설치

그다음, Vite와 React 관련 패키지를 설치한다. 아래 명령어로 간단하게 설치할 수 있다.

 

npm install vite @vitejs/plugin-react

 

Vite의 React 플러그인은 Vite와 React를 자연스럽게 통합해 주기 때문에 꼭 함께 설치해줘야 한다.

 

 

 

 

 

3)★★

Vite 설정 파일 생성

 

vite.config.js 파일을 프로젝트 루트에 생성해 Vite 설정을 추가해줘야 한다. 설정 파일은 이렇게 작성하면 된다.

 

import { defineConfig } from 'vite';
import react from '@vitejs/plugin-react';

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

 

 

 

 

 

4)★★

index.html 생성

Vite는 CRA처럼 public/index.html을 사용하는 게 아니라, 프로젝트 루트에 직접 index.html 파일을 만들어줘야 한다. 기존 CRA의 public/index.html 파일을 Vite에 맞게 이렇게 수정하면 된다. (파일을 직접 이동하고 index를 수정해도 된다.)

 

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>React Vite App</title>
  </head>
  <body>
    <div id="root"></div>
    <script type="module" src="/src/main.jsx"></script>
  </body>
</html>

 

 

 

 

5)★★

package.json 수정

이제 package.json의 스크립트 부분도 수정해야 한다. CRA의 react-scripts 명령어 대신 Vite 명령어로 변경해 주면 된다.

 

"scripts": {
  "dev": "vite",
  "build": "vite build",
  "start": "vite preview"
}

 

 

 

 

6) 프로젝트 구조 및 코드 수정

CRA에서는. env 파일로 환경 변수를 관리했는데, Vite에서는 VITE_로 시작하는 환경 변수를 사용해야 한다.

예를 들어, REACT_APP_API_URL은 VITE_API_URL로 변경해줘야 한다.

또한, process.env 대신 Vite에서는 import.meta.env를 사용해야 한다. 아래와 같이 코드에서 수정하면 된다.

 

 

REACT_APP_KAKAO_KEY=blahblahblah
REACT_APP_FETCH_URL=http://localhost:3000/

나는 이렇게 돼있던 코드를

 

VITE_KAKAO_KEY=52ke87d146ek29e688e39dkfn8b0ef28 
VITE_FETCH_URL=http://localhost:3000/

 이런 식으로 변경했다.

 

 

 

 

 

 

4. 마이그레이션 후 테스트

이제 

npm run dev

명령어를 넣고 잘 실행되는지 확인해 보면 된다!

 

 

 

 

 

느낀 점.

 

생각보다 간단했고, 드라마틱하게 속도차이를 느낄 순 없지만 좀 더 빨라진 거 같다.

특히 지금은 코드의 량이 적고 프로젝트 초기라 그렇지만 시간이 지나고 코드가 쌓일수록 빨라진 체감을 더 느낄 수 있을 거 같다.

나도 많은 reference를 참고하여 진행했기 때문에, 잘못된 점이 있을 수 있다.

너그러이 봐주시고 도움이 되셨다면 댓글 남겨주시면 힘이 됩니다!! (아주많이!)

 

반응형