1. 准备工作
- 备份项目
确保项目已提交或备份,防止迁移中出现不可逆问题。 - 检查依赖兼容性
运行npm ls webpack
确认是否有强依赖 Webpack 的第三方库(如某些老旧插件)。
2. 安装 Vite 及核心插件
bash
bash
npm uninstall webpack webpack-cli webpack-dev-server # 移除 Webpack
npm install vite @vitejs/plugin-react @vitejs/plugin-vue -D # 根据框架选择插件
3. 调整项目结构
- 移动 ****
index.html
****到根目录
Vite 默认从根目录加载index.html
(而非public
目录),并需显式引入入口文件:
xml
html
<!-- 原 Webpack 的 public/index.html -->
<script type="module" src="/src/main.jsx"></script> <!-- 添加 type="module" -->
- 清理 Webpack 配置
删除webpack.config.js
及相关文件(如babel.config.js
若改用 Vite 内置 Babel)。
4. 配置 Vite
- 创建 ****
vite.config.js
根据框架配置插件和别名:
javascript
javascript
// 示例:React 项目
import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react'
export default defineConfig({
plugins: [react()],
resolve: {
alias: {
'@': '/src', // 路径别名(原 Webpack 的 resolve.alias)
}
},
server: {
port: 3000, // 开发服务器端口
proxy: { // 代理配置(对应 Webpack 的 devServer.proxy)
'/api': 'http://localhost:8080'
}
}
})
- 处理静态资源
Vite 使用import.meta.url
引用资源,替换 Webpack 的require
:
arduino
javascript
// 原 Webpack 代码
const image = require('./image.png')
// Vite 中改为
const imageUrl = new URL('./image.png', import.meta.url).href
5. 环境变量迁移
- 重命名环境变量
Vite 默认只加载以VITE_
开头的变量(可通过envPrefix
修改):
ini
bash
# .env
VITE_API_KEY=xxx # 替换原 Webpack 的 REACT_APP_API_KEY
- 代码中访问变量
使用import.meta.env
替代process.env
:
arduino
javascript
// 原 Webpack 代码
const apiKey = process.env.REACT_APP_API_KEY
// Vite 中改为
const apiKey = import.meta.env.VITE_API_KEY
6. 调整构建命令
修改 package.json
中的 scripts:
json
json
{
"scripts": {
"dev": "vite", // 替代 webpack serve
"build": "vite build", // 替代 webpack --mode production
"preview": "vite preview"
}
}
7. 处理常见兼容性问题
- Node.js 全局变量(如 ****
process
)
在vite.config.js
中定义全局变量:
arduino
javascript
export default defineConfig({
define: {
'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV)
}
})
- CommonJS 模块
使用@originjs/vite-plugin-commonjs
转换 CJS 模块:
bash
bash
npm install @originjs/vite-plugin-commonjs -D
javascript
javascript
// vite.config.js
import commonjs from '@originjs/vite-plugin-commonjs'
export default defineConfig({
plugins: [commonjs()]
})
8. 验证与优化
- 启动开发服务器
arduino
bash
npm run dev
-
- 检查 HMR 是否正常
- 解决控制台报错(常见于路径或模块语法问题)
- 生产构建测试
arduino
bash
npm run build && npm run preview
-
- 检查
dist
目录输出文件 - 优化构建配置(如代码分割、压缩)
- 检查
其他的就是根据具体的项目针对一些插件进行替换了。