1、前言

接手公司的某个项目已经两年了,现在每次启动项目都接近1分钟,hmr也要好几秒的时间,but vite2发布之后就看到了曙光,但是一直没有动手进行升级,昨天终于忍不住了,升级之后几秒钟就完成了。

2、开始升级

注:只是升级了开发环境,打包依旧是webpack(也试过打包也用vite,但是打包后发现iview的字体图标出现问题了,初步验证是静态资源的问题,vite打包后的静态资源默认放到assets下,如果有解决的同学麻烦告知下解决方案)

v2.1 安装vuecli插件vite

vue add vit # 添加vite插件

插件安装完成后会在package.json中的script添加:

{
"script": {
"vite": "node ./bin/vite"
}
}

使用 pnpm 的同学,如果项目根目录下没有 .npmrc 文件请自行添加并在文件内加上 shamefully-hoist=true;否则安装vite插件可能会失败。

2.2、运行项目并排查错误

2.2.1、TypeError: Cannot read property 'alias' of undefined

这个错误是因为在vue.config.js中的configureWebpack只能使用对象的配置方法(vue cli支持对象和函数两种方式)

2.2.2 Unrestricted file system access to "/src/components/editPwd

出现这个问题的原因是:vite默认配置中的extensions不包含.vue;解决方法:

  • 1、在vue.config中加上extensions
// vue.config.js
module.exports = {
configureWebpack:{
resolve:{
extensions: [".mjs", ".js", ".ts", ".jsx", ".tsx", ".json", ".vue"]
}
}
}
  • 2、所有vue组件在导入时加上.vue的后缀名。

2.2.3、启动端口不是8080

vite默认的启动端口是3000,所以需要在vue.config.js中的devServer中加上port:8080

// vue.config.js
module.exports = {
devServer:{
port: 8080
}
}

2.2.4、开发时的代理失效

代理失效的原因:在vuecli中的重写配置是pathRewrite,而在vite中是rewrite.

解决方法:

module.exports = {
devServer: {
port: 8080,
proxy: {
"/api/cost/": {
target: "http://localhost:9331",
changeOrigin: true,
pathRewrite: {
"^/api/cost/": "/",
},
rewrite: path => path.replace(/^\/api\/cost\//, "/"), // 适配vite
},
"/api/import/": {
target: "http://localhost:9332",
changeOrigin: true,
pathRewrite: {
"^/chargapp/import/": "/",
},
rewrite: path => path.replace(/^\/api\/import\//, "/"), // 适配vite
},
"/api/": {
target: "http://localhost:9333",
ws: true,
changeOrigin: true,
pathRewrite: {
"^/api/": "/",
},
rewrite: path => path.replace(/^\/api\//, "/"), // 适配vite
},
},
},
}

3、升级完成

至此整个升级过程就结束了,总的来说还是比较顺利的没有太多坑,都是一些比较好解决的问题。最后感谢各位观众老爷的能看到最后 O(∩_∩)O 希望你能有所收获

为老的vueCli项目添加vite支持的更多相关文章

  1. 如何使用vs将asp.net core项目添加容器支持并发布docker镜像到私有dockerhub和添加k8s/helm管理

    这篇文章介绍一下,如何使用VS2017给asp.net core添加容器支持,并发布镜像到私有docker hub,然后用chart管理容器镜像的操作流程. 话不多说,just do it. 新建项目 ...

  2. 为项目添加CUDA支持

    最近研究体绘制方面的东西,需要用到CUDA加速.从官网下载了CUDA 7.0(支持VS2013)装好后,VS2013中能直接创建CUDA项目,也可以在原有项目中添加cu文件. 进入正题,为已有项目添加 ...

  3. idea 项目添加web支持

    选中项目添加 add - web

  4. iOS开发-- 创建podspec文件,为自己的项目添加pod支持

    开篇扯淡 作为一个iOS开发者,一定用过CocoaPods吧,没用过?点这儿去面壁吧 Cocoapods作为iOS开发的包管理器,给我们的开发带来了极大的便利,而且越来越多的第三方类库支持Pod,可以 ...

  5. springboot项目添加jsp支持

    一.创建springboot项目 使用 http://start.spring.io/ 快速创建一个springboot项目下载并导入 二.添加依赖 在pom.xml中添加支持jsp的依赖如下: &l ...

  6. android studio: 为现有项目添加C++支持

    刚开始创建项目的时候并没有勾选“include C++ support” 选项: 后期增加步骤: 1.拷贝已有支持C++项目的CMakeLists.txt文件到现有项目的app目录下: 2.在app/ ...

  7. 创建podspec文件,为自己的项目添加pod支持

    Cocoapods作为iOS开发的包管理器,给我们的开发带来了极大的便利,而且越来越多的第三方类库支持Pod,可以通过Pod傻瓜式的集成到自己的工程中,那么问题来了,我自己也有一系列的小工具类,怎么让 ...

  8. 基于vue-cli项目添加服务端渲染

    两个示例的git地址: 1. 我的环境 2. 方式一:使用prerender-spa-plugin插件获得SSR的效果. 2.1 说明 2.2 初始化 1 vue init webpack vue-p ...

  9. Web项目添加Maven支持

    很多时候,进入到某个项目组,并非项目刚刚开始:同样,很多时候,项目并非一开始就有Maven支持: 对现有的项目支持Maven,需要修改以下地方: 1. 将以下代码拷贝到工程根路径下的  .projec ...

随机推荐

  1. 自学linux——6.安全外壳协议(ssh服务)

    ssh服务 ssh(secure shell)安全外壳协议:远程连接协议,远程文件传输协议 1.协议使用端口号默认:22 若要修改,则修改ssh服务的配置文件/etc/ssh/ssh_config a ...

  2. kivy八种布局方式学习

    kivy八种布局:FloatLayout.BoxLayout.AnchorLayout.GridLayout.PageLayout.RelativeLayout.ScatterLayout.Stack ...

  3. 花1个月时间准备 面试华为,薪资和定级都谈好了却被拒,HR竟说......

    说在前面,千万不要频繁跳槽. 本来华为很想去的,面试前花了一个月的时间准备,面试过程挺顺利的,也拒绝了其他的所有面试邀请,而我拒绝其他面试邀请的底气,则是之前面试过程中的良好表现,薪资和定级都谈好了. ...

  4. Window2016 安装Docker

    测试环境 Windows2016 DataCenter 安装步骤 1.开始运行"PowerShell" 2.指定Tls协议为1.2.(建议都先执行这一条命令,官方文档没有这一步,实 ...

  5. [数据结构-平衡树]普通 FHQ_Treap从入门到精通(注释比代码多系列)

    普通 FHQ_Treap从入门到精通(注释比代码多系列) 前提说明,作者写注释太累了,文章里的部分讲解来源于Oi-wiki,并根据代码,有部分增改.本文仅仅发布于博客园,其他地方出现本文,均是未经许可 ...

  6. MongoDB-02-复制集

    复制集(ReplicationSet) 基本原理 基本构成是1主2从的结构,自带互相监控投票机制(Raft(MongoDB) Paxos(mysql MGR 用的是变种)) 如果发生主库宕机,复制集内 ...

  7. STM32—PID控制在直流电机中的应用

    文章目录 一.PID控制算法 1.什么是PID 2.PID系数的理解 Ⅰ.比例(P)部分 Ⅱ.积分(I)部分 Ⅲ.微分(D)部分 3.PID的数字化处理 二.位置闭环控制 三.速度闭环控制 一.PID ...

  8. bootstrap.yaml和application.yaml的区别

    bootstrap.yaml 配置一些引导系统启动的参数,这些参数一旦指定后就不会变动了.比如程序的端口号,配置中心的地址等. application.yaml 应用级别的参数配置,可能会根据业务需求 ...

  9. 一文搞懂RPC原理

    RPC原理解析 什么是RPC RPC(Remote Procedure Call Protocol)--远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议.R ...

  10. JIT-动态编译与AOT-静态编译:java/ java/ JavaScript/Dart乱谈

    C 和 C++ 之类的编译语言性能远超Java,但是生成的代码只能在有限的几种系统上执行,这就有了Java的存在基础(JVM-跨平台) 早期 Java 运行时所提供的性能级别远低于 C 和 C++ 之 ...