如何把项目里的webpack换成vite?

1. 准备工作

  1. 备份项目
    确保项目已提交或备份,防止迁移中出现不可逆问题。
  2. 检查依赖兼容性
    运行 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. 调整项目结构

  1. 移动 ****index.html ****到根目录
    Vite 默认从根目录加载 index.html(而非 public 目录),并需显式引入入口文件:
xml 复制代码
html


<!-- 原 Webpack 的 public/index.html -->
<script type="module" src="/src/main.jsx"></script>  <!-- 添加 type="module" -->
  1. 清理 Webpack 配置
    删除 webpack.config.js 及相关文件(如 babel.config.js 若改用 Vite 内置 Babel)。

4. 配置 Vite

  1. 创建 ****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'
    }
  }
})
  1. 处理静态资源
    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. 环境变量迁移

  1. 重命名环境变量
    Vite 默认只加载以 VITE_ 开头的变量(可通过 envPrefix 修改):
ini 复制代码
bash


# .env
VITE_API_KEY=xxx  # 替换原 Webpack 的 REACT_APP_API_KEY
  1. 代码中访问变量
    使用 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. 处理常见兼容性问题

  1. Node.js 全局变量(如 ****process
    vite.config.js 中定义全局变量:
arduino 复制代码
javascript


export default defineConfig({
  define: {
    'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV)
  }
})
  1. 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. 验证与优化

  1. 启动开发服务器
arduino 复制代码
bash


npm run dev
    • 检查 HMR 是否正常
    • 解决控制台报错(常见于路径或模块语法问题)
  1. 生产构建测试
arduino 复制代码
bash


npm run build && npm run preview
    • 检查 dist 目录输出文件
    • 优化构建配置(如代码分割、压缩)

其他的就是根据具体的项目针对一些插件进行替换了。

相关推荐
zzywxc7873 分钟前
解锁 Rust 开发新可能:从系统内核到 Web 前端的全栈革命
开发语言·前端·python·单片机·嵌入式硬件·rust·scikit-learn
知新坊6 分钟前
RustDesk 完整部署教程:支持 Web 管理后台和网页客户端远程,保姆级教学来了!
前端
敲敲了个代码18 分钟前
UniApp 多页面编译优化:编译时间从10分钟到1分钟
开发语言·前端·javascript·学习·uni-app
景彬32 分钟前
小红书小组件开发 最早踩坑版
前端·微信小程序
mapbar_front1 小时前
今天聊聊面试
前端·面试
华仔啊1 小时前
Vue3+CSS实现一个非常丝滑的 input 标签上浮动画,设计师看了都点赞
前端·css·vue.js
北海道浪子1 小时前
[免费送$1000]ClaudeCode、Codex等AI模型在开发中的使用
前端·人工智能·后端
明月与玄武1 小时前
2025 前端框架决战:Vue 与 React 分析优缺点及使用场景!
前端·vue.js·react.js
无盐海2 小时前
XSS漏洞攻击 (跨站脚本攻击)
前端·xss
不一样的少年_2 小时前
1024程序员节:用不到100行代码做个“代码雨屏保”装X神器(附源码)
前端·javascript·浏览器