webpack+vue2 升级 vite+vue2 记录

news/2024/10/18 15:56:47/文章来源:https://www.cnblogs.com/aleafo/p/18474436

2024 年了,webpack 构建的 vue2 项目,由于路由较多,每次修改都会出现编译时间较长的问题(平均 10~40 秒),长期开发的话,非常的不友好。因此决定升级 vite构建。参考了几篇文章,基本 每篇遇到的坑都不少。

本文做一个记录。

主要是各个依赖的版本问题。

全局安装的 vite 版本,建议版本 4.5.3,因为这是对 vue2 能支持的最高版本了。

"vite": "^4.5.3",

vue建议使用2.7.x,既能对 setup 有支持,而且,完全支持 vue2 的特性。

"vue": "^2.7.14",

同时,必备的 vite 对 vue2 的支持插件 2.3.x

"@vitejs/plugin-vue2": "2.3.1",

sass 版本,建议使用 1.76,因为高于这个版本,@import 语法以及嵌套插入父元素属性的写法会被标记为不推荐,出现大量的警告。

 "sass": "1.76",

额外的,我们很大概率为了优化首屏加载速度,可能会用到 cdn,那就使用插件

"vite-plugin-cdn-import": "^1.0.1",

最后附上用到的 package.json 以及 vite.config.js 配置

{"name": "basic-ui","version": "4.0.0","private": true,"scripts": {"pre": "cnpm install || yarn --registry https://registry.npmmirror.com/ || npm install --registry https://registry.npmmirror.com/ ","dev": "vite","build": "vite build --mode production"},"dependencies": {"@chenfengyuan/vue-qrcode": "^1.0.1","@riophae/vue-treeselect": "0.4.0","@sscfaith/avue-form-design": "1.3.12","autoprefixer": "^10.4.20","avue-plugin-ueditor": "^0.2.18","axios": "^0.18.0","babel-polyfill": "^6.26.0","classlist-polyfill": "^1.2.0","clipboard": "^2.0.4","codemirror": "^5.53.2","crypto-js": "^3.1.9-1","dayjs": "^1.11.13","echarts": "^4.2.1","element-ui": "2.12.0","js-cookie": "^2.2.0","less-loader": "^6.0.0","nprogress": "^0.2.0","qs": "^6.13.0","script-loader": "^0.7.2","sockjs-client": "1.0.0","stomp-websocket": "2.3.4-next","vue": "^2.7.14","vue-axios": "^2.1.2","vue-clipboard2": "^0.3.0","vue-cron": "^1.0.9","vue-echarts": "^4.0.1","vue-json-editor": "^1.2.3","vue-json-tree-view": "^2.1.4","vue-quill-editor": "3.0.6","vue-router": "^3.0.2","vuex": "^3.0.1"},"devDependencies": {"@vitejs/plugin-vue2": "2.3.1","benz-amr-recorder": "^1.0.14","chai": "^4.1.2","sass": "1.76","vite": "^4.5.3","vite-plugin-cdn-import": "^1.0.1","vue-template-compiler": "^2.6.10","vue-video-player": "^5.0.2"},"lint-staged": {"*.js": ["vue-cli-service lint","git add"],"*.vue": ["vue-cli-service lint","git add"]}
}

 

vite.config.js

/*** 配置参考:* https://cli.vuejs.org/zh/config/*/
import path from "path";
import { defineConfig } from "vite";
import Vue from "@vitejs/plugin-vue2";
import { Plugin as importToCDN } from "vite-plugin-cdn-import";const url = "http://to.youer.server:8090";
export default defineConfig({// 开发或生产环境服务的公共基础路径,用于指定项目中静态资源的基本路径base: "/",css: {preprocessorOptions: {scss: {api: "modern", // or 'modern'
      },},},optimizeDeps: {include: ["vue-cropper", "wangeditor"],},// 构建选项
  build: {target: "es2015",// 指定输出路径(相对于 项目根目录).outDir: "dist",// 指定生成静态资源的存放路径(相对于 build.outDir)。在 库模式 下不能使用。assetsDir: "static",// 构建后是否生成 source map 文件sourcemap: false,minify: "terser",terserOptions: {compress: {drop_console: true, //打包时删除consolepure_funcs: ["console.log"],drop_debugger: true, //打包时删除debugger
      },output: {comments: true, // 打包时删除注释
      },},},server: {open: true,disableHostCheck: true,port: 5186,host: "0.0.0.0",proxy: {"/api": {target: url,ws: false, // 需要websocket 开启changeOrigin: true,rewrite: (path) => path.replace(/^\/api/, ""),},// 3.5 以后不需要再配置
    },},resolve: {alias: [{find: /^~/,replacement: "",},{find: "@",replacement: path.resolve(__dirname, "src"),},],// 导入时想要省略的扩展名列表,默认值['.mjs', '.js', '.mts', '.ts', '.jsx', '.tsx', '.json']// 官方文档中说:不建议忽略自定义导入类型的扩展名(例如:.vue),因为它会影响 IDE 和类型支持extensions: [".mjs", ".js", ".ts", ".jsx", ".tsx", ".json", ".vue"],},plugins: [Vue(),importToCDN({modules: [{name: "vue",var: "Vue",path: "https://cdn.jsdelivr.net/npm/vue@2.7.14/dist/vue.min.js",},{name: "element-ui", // package.json 中依赖的名称,var: "ELEMENT", // 全局变量名,根据包里的变量设定,无法自定义path: "https://cdn.jsdelivr.net/npm/element-ui@2.12.0/lib/index.min.js", // CDN 链接css: "https://cdn.jsdelivr.net/npm/element-ui@2.12.0/lib/theme-chalk/index.min.css", // 依赖有css就填,没有就去掉这个
        },],}),// ViteRequireContext(), // 亲测有效,兼容require.context// transformScss(), // 亲测有效,但是不推荐,建议全局替换deep// vueJsx()
  ],});

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/816917.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Jenkins+Coverage的代码覆盖率集成实践

Jenkins+Coverage的代码覆盖率集成实践 一、工具介绍Jenkins: Jenkins是一个开源的、基于Java开发的持续集成工具,它可以帮助开发人员自动化构建、测试和部署软件项目。 Coverage: Coverage是一个Python代码覆盖率工具,用于测量代码执行过程中哪些代码行被执行到,从而评估…

C++顺序结构(3)、数据类型_____教学

一、设置域宽setw() 输出的内容所占的总宽度成为域宽,有些高级语言中称为场宽。 使用setw()前,必须包含头文件iomanip,即#include<iomanip> 头文件iomanip,用来声明一些“流操作符”,需要一定格式输入输出时,就需要用到它,比较常用的有设置域宽、设置左右对齐、设置…

OpenCity: Open Spatio-Temporal Foundation Models for Traffic Prediction

1. 数据准备 在这个数据处理过程中,以数据集 PEMS07M 为例,整个数据抽取和划分过程如下:初始数据维度:原始训练数据 data_train 的维度为 (12672, 228, 3)。其中:12672 表示时间步数,代表不同的时间点采样的数据。 228 表示空间节点数(例如不同的交通站点)。 3 表示每个…

04C++顺序结构(3)

1、设置域宽setw(); 2、cin语句; 3、输入输出.格式化一、设置域宽setw() 输出的内容所占的总宽度成为域宽,有些高级语言中称为场宽。 使用setw()前,必须包含头文件iomanip,即#include<iomanip> 头文件iomanip,用来声明一些“流操作符”,需要一定格式输入输出时,就…

轻松上手-MVVM模式_关系型数据库_云函数T云数据库

作者:狼哥 团队:坚果派 团队介绍:坚果派由坚果等人创建,团队拥有12个华为HDE带领热爱HarmonyOS/OpenHarmony的开发者,以及若干其他领域的三十余位万粉博主运营。专注于分享HarmonyOS/OpenHarmony、ArkUI-X、元服务、仓颉。团队成员聚集在北京,上海,南京,深圳,广州,宁…

九宫格自由流转拼图游戏

作者:狼哥 团队:坚果派 团队介绍:坚果派由坚果等人创建,团队拥有12个华为HDE带领热爱HarmonyOS/OpenHarmony的开发者,以及若干其他领域的三十余位万粉博主运营。专注于分享HarmonyOS/OpenHarmony、ArkUI-X、元服务、仓颉。团队成员聚集在北京,上海,南京,深圳,广州,宁…

数据预处理-DataFrame切片

此Blog仅作为日常学习工作中记录使用,Blog中有不足之处欢迎指出 以kaggle中房屋预测的训练集为例,说明DataFrame切片常用操作 一、读入数据 import numpy as np import pandas as pdfile_path = ***\kaggle_house_pred_train.csv data = pd.read_csv(file_path)data.columns …

轻松上手-Navigation路由 H5

作者:狼哥 团队:坚果派 团队介绍:坚果派由坚果等人创建,团队拥有12个华为HDE带领热爱HarmonyOS/OpenHarmony的开发者,以及若干其他领域的三十余位万粉博主运营。专注于分享HarmonyOS/OpenHarmony、ArkUI-X、元服务、仓颉。团队成员聚集在北京,上海,南京,深圳,广州,宁…

Audio

音频文件导入 常用格式wav mp3 aiff音频文件属性设置Force To Mono:多声道转单声道; Normalize:强制为单声道时,混合过程中被标准化 Load In Background:在后台加载时,不阻塞主线程 Ambisonic:立体混响声,非常适合360度视频和XR应用程序,如果音频文件包含立体混响声编…

RenderTexture

基础概念 RenderTexture 在Unity中,RenderTexture是一种纹理,它可以在运行时动态地生成图像数据,并且可以作为着色器的输入或者显示在游戏世界的任何材质上。简单来说,RenderTexture让你能够将场景或特定相机的渲染结果捕获到一个纹理中,然后这个纹理可以被用作其他渲染过…

九点共圆及其圆心证明(证明过程已更新)

九点共圆及其圆心证明主要思路:固定 \(P,L\),证明其它七个点均在以 \(PL\) 为直径的圆上。 条件的来源会备注在括号内。背景可能影响观感,建议打开极简模式阅读。这是一个三角形 \(\triangle ABC\),设 \(BC,AC,AB\) 边上垂足分别为 \(D,E,F\),其边上中点分别为 \(L,M,N\),…

【喜讯】全球电商大数据平台推出F类免费API接口服务!

好消息,全球电商大数据平台再次上线多个类别接口,首次推出F类免费API接口服务,为所有追求数据赋能、寻求创新突破的企业和个人,带来了前所未有的机遇。好消息,值此之际;全球电商大数据平台再次上线多个类别接口,首次推出F类免费API接口服务,为所有追求数据赋能、寻求创…