Webpack 換成 Vite

原本的專案都是用 webpack 打包,現在想換成 vite 看看

安裝 Vite 和相關的 Plugins

1
npm install vite @vitejs/plugin-react --save-dev

Restructure Project

原本我是只有 srcdist 資料夾,但是 Vite 會需要 srcdistpublic。所有靜態資源包含圖片、404.htmlCNAME 等都要放在 public,在跑 vite build 的時候它會去讀取 public 資料夾裡面的資源,最後一並放入 dist

新增 vite.config.js

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
import { defineConfig } from "vite";
import react from "@vitejs/plugin-react";
import path from "path";

// Detect environment mode
const isDev = process.env.NODE_ENV === "development";
console.log("isDev: ", isDev);

export default defineConfig({
plugins: [react()],
root: path.resolve(__dirname, "src"),
publicDir: path.resolve(__dirname, "public"),
resolve: {
alias: {
States: path.resolve(__dirname, "src/States"),
Utilities: path.resolve(__dirname, "src/Utilities"),
Components: path.resolve(__dirname, "src/Components"),
},
},
server: {
port: 7070,
strictPort: true,
open: true, // Open browser automatically
},
build: {
outDir: path.resolve(__dirname, "dist"),
emptyOutDir: true,
sourcemap: isDev ? "inline-source-map" : false,
},
define: {
"process.env.NODE_ENV": JSON.stringify(process.env.NODE_ENV),
},
base: isDev ? "/" : "https://bms.carbon-walker.com/",
});

package.json

這部分要改成

1
2
3
4
5
6
7
"scripts": {
"dev": "vite",
"build": "vite build --emptyOutDir",
"predeploy": "npm run build",
"deploy": "gh-pages -d dist",
"format": "prettier --write ."
},

刪掉 Webpack-Specific 的 Packages

1
npm remove webpack webpack-cli webpack-dev-server html-webpack-plugin babel-loader style-loader css-loader postcss-loader

雖然 Vite 速度感覺快很多,但是花了一堆時間在 debug,遇到一堆怪怪的問題,之後再看有沒有更酷的功能
金句


Webpack 換成 Vite
https://933yee.github.io/notes/2025/02/05/vite/
Author
Kevin Lee
Posted on
February 5, 2025
Licensed under