기존에 CRA + React + JS 로 만들었던 프로젝트를 Vite + React + JS + SWC 로 마이그레이션 했다.
npm install vite @vitejs/plugin-react-swc --save-dev
npm uninstall react-scripts
"scripts": {
"dev": "vite",
"build": "vite build",
"preview": "vite preview"
},
vite.config.js 파일을 루트 디렉토리에 생성하고 작성한다.
import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react-swc'
// https://vite.dev/config/
export default defineConfig({
plugins: [react()],
})
기존 프로젝트에서는 index.html 파일이 /public 경로에 있었는데
Vite 에서는 루트(/) 경로에 있어야 한다.
html파일을 옮기면 HTTP ERROR 404
가 아니고 URI malformed
라고 에러가 바뀔 것이다.
또한, index.html 파일 내에 %PUBLIC_URL%
경로를 참조하는 코드들은 과감히 지워준다.
ex) <link rel="icon" href="%PUBLIC_URL%/favicon.ico" />
그리고 내에 index.jsx 파일을 연결해준다.
<body>
<noscript>You need to enable JavaScript to run this app.</noscript>
<div id="root"></div>
<script type="module" src="/src/index.jsx"></script>
</body>
CRA 에서는 .js 로 사용하던 파일을 Vite 에서는 .jsx 로 변경해주어야 한다.
해본다
npm run dev
안되는가?
기존 /node_modules 폴더를 삭제하고 npm install
해서 패키지 재설치 하고 다시 실행시켜본다.
빌드되어진 dist 폴더의 index.html 파일을 보니 src, href 등 경로들이 절대경로로 표시되어있음
vite.config.js 에서 base 옵션을 설정하지 않으면 기본 값이 ‘/’ 으로 되어있었다.
vite.config.js 파일에서 base: ‘’ 를 추가해서 해결하였다.