오늘 전에 하던 개인프로젝트에 기능을 추가하려고 프로젝트를 실행해봤다. 최근에는 Vite로 리액트 프로젝트를 만들어서 npm run dev
를 치고 들어갔다. 그런데 안돼서 다시 보니 CRA(Create React App)으로 만든 프로젝트였다! 그래서 Vite로 마이그레이션해보기로 했다.
리액트 공식문서의 'Start a New React Project' 파트에 더이상 CRA에 대한 언급이 없다. 예전 공식문서에서는 있었는데 지금은 없는 걸 보면 추천되지 않는 것 같다.
<관련 주제>
(번역) ‘Create React App 권장을 Vite로 대체’ PR 대한 Dan Abramov의 답변
Vite는 빌드 시간이 짧다. 실제 빌드했을 때 시간이 단축되는지를 이번 포스팅에서 확인해보았다.
[react] CRA로 만든 프로젝트 vite로 마이그레이션하기에 나와있는 과정을 따라서 했다.
수정해야 했던 부분은 이 부분이었는데, @vitejs/plugin-react 안에 react-refresh 와 동일 역할을 하는 @vitejs/plugin-react-refresh이 내장되어 있어서 또 설치 안해도 된다고 한다.
그래서 이렇게 바꿔줬다.
"devDependencies": {
"@vitejs/plugin-react": "^4.0.4",
"vite": "^4.4.9"
}
빌드 시간은 Vite가 1.4배 빨랐다.
CRA 빌드 시간
Vite 빌드 시간
로컬 서버 시작 시간은 비교해보지 못해서 다른 포스팅을 찾아봤는데, 대략 3배 정도 빠르다고 하는 것 같다.
아래와 같은 오류가 있었고, 플러그인의 버전 문제같았다.
npm ERR! code ETARGET
npm ERR! notarget No matching version found for @vitejs/plugin-react-refresh@^1.4.3.
npm ERR! notarget In most cases you or one of your dependencies are requesting
npm ERR! notarget a package version that doesn't exist.
그래서 여기서 최신 버전을 확인해서 package.json에 넣어줬다.
"devDependencies": {
"@vitejs/plugin-react": "^4.0.4",
"vite": "^4.4.9"
}
리액트 버전 17부터는 import React를 안해줘도 된다고 한다. 17 이전 버전이 아닌 것 같은데 오류가 나서 이따가 확인해보려고 한다.
babel
eslint 오류일 때
타입 오류일 때
CRA로 만든 리액트 프로젝트를 Vite로 마이그레이션해봤다! 이번에 실습 위주로 해보았으니 다음에는 번들러와 Vite에 관한 이론에 대해서 더 공부해보고 싶다.
다음에 읽을 것: https://vitejs.dev/guide/why.html