成功将飞鸟智慧巡园平台项目从 Vue CLI 迁移到 Vite,获得了显著的性能提升和更好的开发体验。
servedev → dev,build → vite build@vue/cli-service、@vue/cli-plugin-*、webpackvite@^4.5.0、@vitejs/plugin-vue@^4.5.0、vite-plugin-svg-icons、vite-plugin-mock-dev-servervue.config.js (Vue CLI 配置)babel.config.js (Babel 配置)vite.config.js (Vite 配置)index.html (Vite 入口文件)require.context → import.meta.globmodule.exports → export defaultconst config = require("../config") → import config from "../config"@vite-ignore 注释src/router/mainRoutes.jssrc/router/globalRoutes.jssrc/views/Login.vuesrc/views/AuthenticLogin.vuesrc/views/404.vue.vue 扩展名resize 导出require.context 使用require.context 使用require.context 使用require.context 使用require 语法为 import 语法module.exports 为 export defaultrequire 为动态 importVE_ENV 全局变量定义,使用 loadEnv 正确加载环境变量VE_ENV.SERVER 和 VE_ENV.PYSERVER 在 Vite 中未定义,导致 API 请求地址变成 http://localhost:3002/undefinedsite/user/loginJSON.stringify 导致字符串重复引用,URL 变成 http://localhost:3002/%22http://localhost:3002/%22site/user/loginprocess.env.NODE_ENV 在 Vite 中读取不到env.config.js 配置文件,支持 development 和 production 环境vite.config.js 中使用 loadEnv 函数正确加载环境变量process.env 替换为 env 对象src/api/config.js 中移除默认值,确保必须读取到环境变量defineOptions 全局变量支持vue 导入XE 全局变量设置require() 语法加载静态资源,导致 ReferenceError: require is not defined 错误src/views/home/album_compoents/cacheImg.js:将 require('@/assets/...') 替换为直接路径src/views/home/album/album_compoents/cacheImg.js:同上src/views/warningHome/components/album_compoents/cacheImg.js:同上src/views/workDetail/components/executionProgress.vue:使用 new URL() 方法src/views/warningHome/components/trackDialog.vue:使用模板字符串路径src/views/warningHome/map/gardenPointLayer.js:将 require('@/assets/images/map/garden.png') 替换为直接路径src/views/warningHome/components/album.vue:将 require('@/assets/images/warningHome/gallery/icon-') 替换为模板字符串路径src/views/varietyMap/map.vue:将 require('@/assets/images/map/status/active-icon.png') 替换为直接路径src/views/home/map/samplePointLayer.js:将所有 require('@/assets/images/map/...') 替换为直接路径src/views/home/map/airLineStringLayer.js:将所有 require('@/assets/images/map/...') 替换为模板字符串路径src/views/home/components/foster/adoptList.vue:将 require('@/assets/images/foster-home/list/...') 替换为模板字符串路径src/views/home/album/index.vue:将 require('@/assets/img/gallery/icon-') 替换为模板字符串路径src/views/authentic/pdfMap.js:将所有 require('@/assets/images/map/...') 替换为模板字符串路径src/addFarm/farmMap.js:将所有 require('@/assets/images/map/...') 和 require('@/assets/status/...') 替换为直接路径src/authentic/authenticMap.js:将所有 require('@/assets/images/map/...') 替换为模板字符串路径src/utils/ol-map/Map.js:将所有 require('@/assets/images/map/...') 替换为模板字符串路径src/components/static_map_change/pointLayer.js:将 require('@/assets/images/warningHome/chat/fly-point.png') 替换为直接路径src/components/PicturePreview.vue:将 require('@/assets/images/home/HB-ws0y1menggxv/...') 替换为模板字符串路径src/components/common/stepBox.vue:将 require('@/assets/img/gallery/step-...') 替换为模板字符串路径src/components/chartBox.vue:将 require('@/assets/images/common/chart-...') 替换为模板字符串路径src/views/warningHome/components/timeLine.vue:将 require('@/assets/images/warningHome/...') 替换为模板字符串路径src/components/timeLine.vue:将 require('@/assets/images/home/...') 替换为模板字符串路径src/utils/assetLoader.js:创建静态资源加载工具函数assetsInclude 配置支持更多静态资源格式src/utils/ol-map/VectorLayer.js:移除未使用的 OrderFunction 导入vueshowpdf 库在 Vite 环境中导入失败,显示 does not provide an export named 'default' 错误src/components/PdfDialog.vue:移除未使用的 vueshowpdf 导入src/components/ImageDialog.vue:移除未使用的 vueshowpdf 导入vueshowpdf 库,只是导入了但没有使用,移除导入后功能正常@liveqing/liveplayer-v3 组件依赖 videojs,但在 Vite 环境中 videojs 未定义index.html:添加 <script src="/js/liveplayer-lib.min.js"></script> 标签liveplayer-lib.min.js 是通过 public/index.html 中的 <script> 标签加载的,但在 Vite 的 index.html 中缺失了这个标签,导致 videojs 未定义src/styles/index.scss:将 @import "./mixin"; 和 @import "./variable"; 修改为 @import "./mixin.scss"; 和 @import "./variable.scss";src/views/warningHome/components/album_compoents/albumCarousel7d.vue:将 @import "src/styles/index"; 修改为 @import "@/styles/index.scss";src/views/warningHome/components/album_compoents/albumCarouselItem.vue:将 @import "src/styles/index"; 修改为 @import "@/styles/index.scss";@import 语句需要明确指定文件扩展名,而 Vue CLI 可以自动解析$screenWidth / 750 修改为 math.div($screenWidth, 750),并添加 @use "sass:math";::v-deep 用法弃用警告,这些是 Vue 3 的深度选择器语法变更,不影响功能,可在后续优化中处理@import 规则将在 Dart Sass 3.0.0 中移除::v-deep 用法已弃用,建议使用 :deep()VE_ENV 全局变量在 Vite 中需要重新配置vite.config.js 的 define 中设置环境变量build.rollupOptions.output.manualChunks 进一步优化Vue CLI 到 Vite 的迁移成功完成,项目现在使用更现代的构建工具,获得了显著的性能提升。迁移过程相对顺利,主要涉及配置文件的更新和模块语法的转换。项目现在可以享受 Vite 带来的快速启动和热更新体验。