【前端架构】vue2+webpack3项目迁移vite2记录

本文记录了一个大型vue2+webpack3后台管理系统迁移到vite2的过程,包括创建新vite项目、配置支持vue2、迁移业务代码、处理开发阶段和打包阶段的报错。在迁移过程中,作者遇到了如别名配置、文件扩展名、sass解析等问题,逐一解决后,项目成功启动并打包,提高了开发效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

  1. 前言
  2. 迁移前后对比
  3. 迁移流程
  4. 迁移业务代码到vite项目
  5. 项目开发阶段报错处理
  6. 项目打包阶段处理
  7. 总结

一. 前言

公司有个特别大维护时间长的后台管理系统,使用的是vue2webpack3,虽然配置了很多编译优化,但启动和开发热更新速度依然很慢,极大的影响了开发效率,于是准备迁移vite2来优化,现在已迁移升级,来复盘记录下过程,至于vite速度快于webpack的原因,已经有很多文章讲的很明白,这里只记录下迁移过程和遇到的问题。

二. 迁移前后对比

对比 迁移前webpack3 迁移后vite2
启动开发模式 40秒 3秒之内
热更新 6秒+ 1秒之内
打包构建(vite不做低版本浏览器兼容) 2分30秒 40秒
打包构建(vite做低版本浏览器兼容) 2分30秒 1分05秒

三. 迁移流程

  1. 先创建新的vite项目
  2. 新版vite项目默认是支持vue3的,需要把vue改成vue2版本后配置vite-plugin-vue2插件来支持vue2
  3. 把项目代码改成vue2写法,确保新vite项目可以正常运行vue2
  4. 把原webpack项目生产环境依赖复制到vite项目,剔除掉webpack相关的插件依赖
  5. 复制原项目src文件代码和其他业务相关代码到新vite项目。
  6. vite项目配置开发环境启动命令,根据报错信息来进行调整。
  7. 在测试开发和打包环境都没问题后,替换原先的项目。

四. 迁移业务代码到vite项目

4.1 创建新的vite项目

打开vite官网,按照官网提示创建新的vite项目(由于原先项目没有用ts,所以创建项目不选ts版本,包管理工具也依然选择是npm)。

npm init vite@latest my-vue-app -- --template vue 

创建完成后,使用vs code打开,打开命令行,执行npm i安装依赖

npm i 

安装依赖完成后,使用npm run dev启动项目

npm run dev 

启动完成后,打开项目地址http://localhost:3000/

此时基本的vite2+vue3项目已经启动成功了,但此时vite支持的还是vue3版本的,我们需要让vite支持vue2版本。

4.2 配置vite支持vue2

此时打开vite.config.js,里面的代码为

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
​
// https://vitejs.dev/config/
export default defineConfig({
  plugins: [vue()]
})
​ 

@vitejs/plugin-vue插件是对vue3语法做支持,如果要支持vue2,需要用vite-plugin-vue2

第一步,从vite中删除 @vitejs/plugin-vue配置,从package.json文件中也删除。

npm uninstall @vitejs/plugin-vue -D 

第二步,安装vite-plugin-vue2依赖

npm install vite-plugin-vue2 -D 

第三步,在vite.config.js文件配置vite-plugin-vue2

import { defineConfig } from 'vite'
import { createVuePlugin } from "vite-plugin-vue2";
​
// https://vitejs.dev/config/
export default defineConfig({
  plugins: [createVuePlugin()]
}) 

第四步,修改vue版本由3改为2版本

npm install vue@2 -S 

第五步, 修改main.js,创建根vue实例写法改为vue2写法

import Vue from 'vue'
import App from './App.vue'
​
new Vue({
  render: h => h(App),
}).$mount('#app') 

第六步,修改main.js完成后,修改App.vue文件代码为vue2格式代码

<template>
  <h1>{
  
<think>嗯,用户现在用的是Vue2Webpack,想迁移Vue2Vite。首先,我需要确认Vite是否支持Vue2。记得之前Vite主要针对Vue3,但可能有插件可以支持Vue2。没错,有个vite-plugin-vue2,应该可以处理。 接下来,用户需要知道如何开始迁移。首先应该创建一个新的Vite项目,然后逐步迁移现有代码。可能需要安装必要的依赖,比如vitevuevite-plugin-vue2。然后调整配置文件,比如vite.config.js,设置插件和别名。原来的Webpack配置中的别名可能需要转换到Vite的配置里,这部分需要检查。 然后,入口文件可能有所不同。Vite通常使用index.html作为入口,通过ES模块加载main.js,而Webpack可能用了不同的方式。用户需要把index.html中的脚本引用改为模块形式,比如加上type="module"。同时,public目录的结构可能有变化,需要确认静态资源的路径是否正确。 接下来,处理Vue特有的文件。单文件组件应该没问题,但如果有使用Webpack特定的语法,比如某些loader或特殊配置,可能需要调整。比如,如果在Webpack里用了require.context,Vite可能需要用import.meta.glob来代替,这部分需要代码调整。 然后,环境变量的处理。Vite使用import.meta.env,而Webpack用的是process.env。用户需要将环境变量前缀改为VITE_,并更新代码中的引用。这可能涉及到一些全局替换,需要注意别漏掉地方。 构建和调试命令也需要改,用vite代替webpack的命令,比如dev和build。还有,第三方库的兼容性,尤其是那些依赖Node.js特性或Webpack特定功能的库,可能需要额外配置或替换。比如,使用vite-plugin-require-transform来处理require语句,但可能带来性能问题,需要注意。 可能遇到的问题包括旧插件不兼容,需要找Vite替代品,或者手动解决。UI库如Element UI可能需要调整加载方式,按需引入可能需要使用vite-plugin-style-import之类的插件。还有测试工具,比如从Jest切换到Vitest,可能需要配置。 最后,建议逐步迁移,先尝试新项目,再迁移项目,分模块处理,同时备份代码。这样风险较小,方便回滚。用户可能关心具体步骤和工具是否存在,需要明确列出可用插件和命令,确保他们能一步步操作。</think>将 Vue2 + Webpack 架构迁移Vue2 + Vite 是可行的,但需要逐步调整配置和依赖。以下是具体步骤和工具指南: --- ### 一、迁移前的准备 1. **检查兼容性** - Vite 官方对 Vue3 支持更好,但可通过社区插件 [`vite-plugin-vue2`](https://github.com/underfin/vite-plugin-vue2) 支持 Vue2- 确保项目依赖(尤其是第三方库)与 Vite 兼容,避免依赖 Node.js 特有 API 或 Webpack 特性。 2. **创建新 Vite 项目(可选)** 快速初始化一个干净的 Vue2 + Vite 项目作为参考: ```bash npm create vite@latest my-vue2-vite --template vue-2 ``` 如果官方模板不可用,可手动配置。 --- ### 二、迁移核心步骤 #### 1. **安装依赖** 替换 Webpack 相关依赖为 Vite 的核心包: ```bash npm remove webpack webpack-dev-server vue-loader # 移除旧依赖 npm install vite vite-plugin-vue2 @vue/compiler-sfc --save-dev ``` #### 2. **配置文件迁移** - **新建 `vite.config.js`** 替换原有的 `webpack.config.js`,配置 Vite 插件和别名: ```javascript import { defineConfig } from &#39;vite&#39; import { createVuePlugin } from &#39;vite-plugin-vue2&#39; export default defineConfig({ plugins: [createVuePlugin()], resolve: { alias: { &#39;@&#39;: path.resolve(__dirname, &#39;./src&#39;) // 兼容原 Webpack 别名 } } }) ``` - **调整 `index.html`** Vite 将 `index.html` 作为入口,确保正确引用 JS 文件: ```html <!--Webpack 可能使用 --> <script src="/dist/main.js"></script> <!-- Vite 需改为 --> <script type="module" src="/src/main.js"></script> ``` #### 3. **代码适配** - **环境变量** Vite 使用 `import.meta.env` 替代 `process.env`,需将环境变量前缀改为 `VITE_`: ```env # 原 Webpack VUE_APP_API_URL=xxx # Vite VITE_API_URL=xxx ``` 代码中通过 `import.meta.env.VITE_API_URL` 访问。 - **动态导入与静态资源** Vite 使用 ES 模块语法,替换 `require()` 为 `import`,静态资源路径需调整: ```javascript // 原 Webpack const image = require(&#39;./assets/image.png&#39;) // Vite const image = new URL(&#39;./assets/image.png&#39;, import.meta.url).href ``` #### 4. **处理 Webpack 特有功能** - **`require.context`** 使用 Vite 的 `import.meta.glob` 替代: ```javascript // Webpack const modules = require.context(&#39;./modules&#39;, true, /\.js$/) // Vite const modules = import.meta.glob(&#39;./modules/**/*.js&#39;) ``` - **CSS 预处理器** 直接安装对应的预处理器(如 `sass`)即可,Vite 内置支持: ```bash npm install sass --save-dev ``` --- ### 三、工具与插件推荐 1. **核心插件** - [`vite-plugin-vue2`](https://github.com/underfin/vite-plugin-vue2): Vue2 单文件组件支持。 - [`vite-plugin-require-transform`](https://github.com/WarrenJones/vite-plugin-require-transform): 临时解决 `require` 兼容问题(慎用)。 2. **UI 库按需加载** 如使用 Element UI,推荐 [`vite-plugin-style-import`](https://github.com/anncwb/vite-plugin-style-import): ```javascript // vite.config.js import styleImport from &#39;vite-plugin-style-import&#39; export default defineConfig({ plugins: [ styleImport({ libs: [{ libraryName: &#39;element-ui&#39;, esModule: true, ensureStyleFile: true, resolveStyle: (name) => `element-ui/lib/theme-chalk/${name}.css`, resolveComponent: (name) => `element-ui/lib/${name}` }] }) ] }) ``` 3. **调试与构建** - **开发环境**:`vite dev` - **生产构建**:`vite build` - **预览**:`vite preview` --- ### 四、常见问题 1. **旧插件不兼容** 逐步替换 Webpack 插件,寻找 Vite 替代品(如 `rollup-plugin-*`)。 2. **路径问题** 检查 `public` 目录和静态资源引用,Vite 默认将 `/public` 映射为根路径。 3. **Polyfill 缺失** 在 `vite.config.js` 中通过 `@vitejs/plugin-legacy` 添加传统浏览器支持。 --- ### 五、验证与测试 1. **逐步运行** 分模块迁移,优先验证核心功能。 2. **性能对比** Vite 的冷启动和热更新速度应有显著提升。 通过以上步骤,你可以平稳地将项目迁移Vue2 + Vite 架构。如遇复杂问题,建议先在小规模项目中实验。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值