当前位置: 首页 > news >正文

vue2迁移到vite[保姆级教程]

vue2迁移到vite[保姆级教程]

  • 使用vue CLI创建项目
  • 进行vite迁移详细步骤
    • 1. 安装 Vite 和 Vue 2 支持插件
    • 2. 创建 vite.config.js
    • 3. 修改 package.json 脚本
    • 4. 创建 index.html
    • 5. 确保 main.js 正确引入
    • 6. 处理静态资源
    • 7. 构建优化(可选)
    • 8. 启动项目
  • 常见问题解决
  • 拓展:彻底告别 Webpack

Vue 2项目迁移到 Vite 是一个非常明智的选择,因为 Vite 提供了更快的启动速度和热更新。不过,由于 Vite 原生支持的是 Vue 3,因此需要一些额外配置来支持 Vue 2。

本文将使用一个干净的vue2 CLI创建项目进行演示,你也可按照以下步骤进行操作:

使用vue CLI创建项目

使用 Vue CLI 创建 Vue 2 + JS 项目:vue create 项目名称,以下截图为创建项目时的具体选项:
在这里插入图片描述
在这里插入图片描述

项目创建完成后,接下来对这个项目进行vite迁移

进行vite迁移详细步骤

1. 安装 Vite 和 Vue 2 支持插件

npm install --save-dev vite vite-plugin-vue2

如果你使用了 JSX,再加:

npm install --save-dev @vitejs/plugin-vue2-jsx

2. 创建 vite.config.js

在项目根目录创建 vite.config.js:

// vite.config.js
import { defineConfig } from 'vite'
// import vue2 from 'vite-plugin-vue2' // 错误写法:因为它没有 module.exports = function() {} 这种默认导出
import { createVuePlugin } from 'vite-plugin-vue2' // 正确写法
import { resolve } from 'path'export default defineConfig({plugins: [createVuePlugin() // 启用 Vue 2 支持],// 别名配置(和 Vue CLI 一致)resolve: {alias: {'@': resolve(__dirname, 'src'),'@components': resolve(__dirname, 'src/components'),'@views': resolve(__dirname, 'src/views')// 可根据需要添加更多}},// 开发服务器配置server: {host: '0.0.0.0',       // 允许局域网访问port: 3000,            // 默认端口open: true,            // 启动时自动打开浏览器proxy: {// 如果有 API 接口需要代理,例如:// '/api': {//   target: 'http://localhost:8080',//   changeOrigin: true,//   rewrite: (path) => path.replace(/^\/api/, '')// }}},// 构建输出目录(与 Vue CLI 一致)build: {outDir: 'dist',assetsDir: 'static' // 资源文件夹},// SCSS 全局变量注入(可选,非常实用)css: {preprocessorOptions: {scss: {// 引入全局变量和 mixin// additionalData: `//   @import "@/styles/variables.scss";//   @import "@/styles/mixins.scss";// `}}}
})

3. 修改 package.json 脚本

替换原来的 vue-cli-service 命令:

"scripts": {"serve": "vue-cli-service serve","build:serve": "vue-cli-service build","vite": "vite","build": "vite build","preview": "vite preview","lint": "vue-cli-service lint"
}

拓展:可以使用npm run serve,项目迁移完成后可自行选择是否卸载webpack,卸载可以减少项目体积,
卸载命令:npm uninstall @vue/cli-service,执行后,你就无法再使用 webpack 启动项目了。
具体可阅读下文:彻底告别 Webpack

4. 创建 index.html

Vite 需要一个入口index.html文件放在 public/项目根目录(推荐)。

<!-- 项目根目录 -->
<!-- index.html -->
<!DOCTYPE html>
<html lang="zh-CN">
<head><meta charset="UTF-8" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>Vue 2 + Vite</title>
</head>
<body>
<div id="app"></div>
<!-- 关键:使用 type="module" 引入 main.js -->
<script type="module" src="/src/main.js"></script>
</body>
</html>

✅ 注意:

  • <script type="module" src="/src/main.js"></script> 是关键,Vite 通过它启动应用。
  • 不需要手动引入 Vue 或其他库,由打包系统处理。

5. 确保 main.js 正确引入

你的 src/main.js 应该类似这样:(通常无需改)

import Vue from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'// 如果你使用了 Element UI、Vue Router 等,也需要在这里引入Vue.config.productionTip = falsenew Vue({router,store,render: h => h(App)
}).$mount('#app')

6. 处理静态资源

  • public下的静态资源保留。
  • src/assets 中的资源可以通过 @/assets/xxx 引用。

7. 构建优化(可选)

如果你使用了 VuexVue Router,无需更改,它们在 Vue 2 中仍然可用。

8. 启动项目

npm run vite

在这里插入图片描述
浏览器自动打开,页面正常显示 ✅

你现在可以愉快地享受 Vite 带来的 飞快启动 和 极速热更新 了!⚡

如果后续遇到路由、静态资源、环境变量等问题,也欢迎提问!
在这里插入图片描述


常见问题解决

Vue 2 不支持 <script setup>:除非你使用unplugin-vue2-script-setup插件。
兼容性问题:某些依赖可能不兼容 ESM,可在 vite.config.js 中配置 optimizeDepsresolve.alias
环境变量:Vite 使用 import.meta.env,而不是 process.env。你可以通过 .env 文件定义。
推荐 .env 示例:

创建 .env.development文件:

# .env.development
VITE_APP_API_URL=http://localhost:3000/api

创建 .env.production文件:

# .env.production
VITE_APP_API_URL=https://api.example.com

✅ 提示:Vite 只会暴露 VITE_ 开头的变量。

在代码中使用:

console.log(import.meta.env.VITE_APP_API_URL)

拓展:彻底告别 Webpack

当你执行:

npm uninstall @vue/cli-service

之后,你就 无法再使用 webpack 启动项目了。

🔍 详细解释
1. @vue/cli-service 是什么?
它是 Vue CLI 的核心运行时,提供了以下命令:

  • npm run serve → 启动 Webpack 开发服务器
  • npm run build → 使用 Webpack 打包项目
  • npm run lint
    这些功能都由 @vue/cli-service 内部集成的 Webpack、Babel、ESLint 等工具提供支持。

2. 卸载后会发生什么?

操作结果
npm uninstall @vue/cli-service删除了 Webpack 构建系统
执行 npm run serve报错:vue-cli-service: command not found
Webpack 功能完全消失

3.卸载它有什么好处?

好处说明
🔽 减少 node_modules 体积@vue/cli-service 及其依赖很大(~100MB+)
🔐 减少依赖冲突风险少一个大型构建系统,项目更干净
🧹 明确技术栈表明你已正式切换到 Vite,避免团队混淆
⚡ 提升安装速度npm install 更快

🧹 清理残留配置(可选)
为了“断干净”,你可以删除或保留以下文件:

文件是否可以删除说明
babel.config.js✅ 可删Vite 也支持 Babel,但通常不需要单独配置
vue.config.js✅ 可删Vue CLI 的配置,Vite 不读取它
public/index.html❌ 不要删如果你还用它作为静态资源目录
.browserslistrc✅ 可留影响 Babel 和 PostCSS,Vite 也会用到

💡 建议保留 .browserslistrc,因为它影响 CSS 兼容性处理。

🔄 如果你想临时切回 Webpack
万一哪天你想再用 Webpack,可以重新安装:

npm install --save-dev @vue/cli-service

然后就能继续使用:

npm run serve   # Webpack 启动
npm run build   # Webpack 打包

但注意:两个构建系统共存可能带来混淆,建议 专注使用 Vite。


最后:如果你遇到具体错误,欢迎贴出,我可以帮你针对性解决!


文章转载自:

http://PfGVNjA1.jyjqh.cn
http://19rKp4BX.jyjqh.cn
http://Xzca2Usg.jyjqh.cn
http://RAKgr3ZV.jyjqh.cn
http://9ZQj0Zdg.jyjqh.cn
http://R46CQEhd.jyjqh.cn
http://FGQrYWS1.jyjqh.cn
http://cksl0wz5.jyjqh.cn
http://Kypkeio5.jyjqh.cn
http://dLrHAYbS.jyjqh.cn
http://xrW98DP3.jyjqh.cn
http://GXPSlshw.jyjqh.cn
http://rP0GoqxZ.jyjqh.cn
http://N9f0TEnF.jyjqh.cn
http://F6CCW9La.jyjqh.cn
http://WP6sg1un.jyjqh.cn
http://mRHcn7rN.jyjqh.cn
http://K5OeIcXN.jyjqh.cn
http://JeLPN6DZ.jyjqh.cn
http://MI4I7MtJ.jyjqh.cn
http://t2TNoSlO.jyjqh.cn
http://doY4LMZ7.jyjqh.cn
http://hOrs7sH3.jyjqh.cn
http://RWu2rPfh.jyjqh.cn
http://7f1SP36v.jyjqh.cn
http://YXCTE9tS.jyjqh.cn
http://GMKubTsY.jyjqh.cn
http://nANkOP97.jyjqh.cn
http://iIYtG89F.jyjqh.cn
http://jF8PRWB1.jyjqh.cn
http://www.dtcms.com/a/377388.html

相关文章:

  • 基于webpack的场景解决
  • Vite 中的 import.meta.env 与通用 process.env.NODE_ENV 的区别与最佳实践
  • 除了Webpack,还有哪些构建工具可以实现不同环境使用不同API地址?
  • sklearn聚类
  • I.MX6UL:汇编LED驱动实验
  • 计算机毕设 java 高校机房综合管控系统 基于 SSM+Vue 的高校机房管理平台 Java+MySQL 的设备与预约全流程系统
  • 设计模式-建造者观察者抽象工厂状态
  • 第5讲 机器学习生态构成
  • JAVA秋招面经
  • LVS群集
  • 半导体功率器件IGBT工艺全流程
  • Q3.1 PyQt 中的控件罗列
  • 深入解析ReentrantLock:可重入锁
  • ARM处理器总线架构解析:iCode、D-code与S-Bus
  • Qoder 前端UI/UE升级改造实践:从传统界面到现代化体验的华丽蜕变
  • Flutter多线程
  • 如何在高通跃龙QCS6490 Arm架构上使用Windows 11 IoT企业版?
  • JavaScript 对象说明
  • CMake目标依赖关系解析
  • 小型企业常用的元数据管理工具
  • 论文AI写作哪个软件好?实测对比5款热门AI写作工具
  • PostgreSQL 内机器学习的关键智能算法研究
  • 12公里无人机图传模组:从模糊到超高清的飞跃,抗干扰能力全面升级
  • GitHub Actions中steps下面的Setup environment设置的环境变量不能在后面步骤使用问题处理
  • YOLOv5实战-GPU版本的pytorch虚拟环境配置
  • 苍穹外卖项目实战(day7-2)-购物车操作功能完善-记录实战教程、问题的解决方法以及完整代码
  • 【VsCode】离线状态下安装插件
  • 浏览器开发CEFSharp (十七)网页自定义下载—仙盟创梦IDE
  • Nodejs读取目录下面的文件
  • docker 重命名镜像