如何為老vue項(xiàng)目添加vite支持詳解
1、前言
接手公司的某個(gè)項(xiàng)目已經(jīng)兩年了,現(xiàn)在每次啟動(dòng)項(xiàng)目都接近1分鐘,hmr也要好幾秒的時(shí)間,but vite2發(fā)布之后就看到了曙光,但是一直沒(méi)有動(dòng)手進(jìn)行升級(jí),昨天終于忍不住了,升級(jí)之后幾秒鐘就完成了。
vite —— 一個(gè)由 vue 作者尤雨溪開(kāi)發(fā)的 web 開(kāi)發(fā)工具,它具有以下特點(diǎn):
快速的冷啟動(dòng)
即時(shí)的模塊熱更新
真正的按需編譯
2、開(kāi)始升級(jí)
注:只是升級(jí)了開(kāi)發(fā)環(huán)境,打包依舊是webpack(也試過(guò)打包也用vite,但是打包后發(fā)現(xiàn)iview的字體圖標(biāo)出現(xiàn)問(wèn)題了,初步驗(yàn)證是靜態(tài)資源的問(wèn)題,vite打包后的靜態(tài)資源默認(rèn)放到assets下,如果有解決的同學(xué)麻煩告知下解決方案)
2.1 安裝vuecli插件vite
vue add vit # 添加vite插件
插件安裝完成后會(huì)在package.json中的script添加:
{ "script": { "vite": "node ./bin/vite" } }
使用 pnpm 的同學(xué),如果項(xiàng)目根目錄下沒(méi)有 .npmrc 文件請(qǐng)自行添加并在文件內(nèi)加上 shamefully-hoist=true;否則安裝vite插件可能會(huì)失敗。
2.2、運(yùn)行項(xiàng)目并排查錯(cuò)誤
2.2.1、TypeError: Cannot read property 'alias' of undefined
這個(gè)錯(cuò)誤是因?yàn)樵趘ue.config.js中的configureWebpack只能使用對(duì)象的配置方法(vue cli支持對(duì)象和函數(shù)兩種方式)
2.2.2 Unrestricted file system access to "/src/components/editPwd
出現(xiàn)這個(gè)問(wèn)題的原因是:vite默認(rèn)配置中的extensions不包含.vue;解決方法:
1、在vue.config中加上extensions
// vue.config.js module.exports = { configureWebpack:{ resolve:{ extensions: [".mjs", ".js", ".ts", ".jsx", ".tsx", ".json", ".vue"] } } }
2、所有vue組件在導(dǎo)入時(shí)加上.vue的后綴名。
2.2.3、啟動(dòng)端口不是8080
vite默認(rèn)的啟動(dòng)端口是3000,所以需要在vue.config.js中的devServer中加上port:8080
// vue.config.js module.exports = { devServer:{ port: 8080 } }
2.2.4、開(kāi)發(fā)時(shí)的代理失效
代理失效的原因:在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: { "^/api/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、升級(jí)完成
至此整個(gè)升級(jí)過(guò)程就結(jié)束了,總的來(lái)說(shuō)還是比較順利的沒(méi)有太多坑,都是一些比較好解決的問(wèn)題。
到此這篇關(guān)于如何為老vue項(xiàng)目添加vite支持的文章就介紹到這了,更多相關(guān)老vue項(xiàng)目添加vite內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
關(guān)于SpringBoot與Vue交互跨域問(wèn)題解決方案
最近在利用springboot+vue整合開(kāi)發(fā)一個(gè)前后端分離的個(gè)人博客網(wǎng)站,所以這一篇總結(jié)一下在開(kāi)發(fā)中遇到的一個(gè)問(wèn)題,關(guān)于解決在使用vue和springboot在開(kāi)發(fā)前后端分離的項(xiàng)目時(shí),如何解決跨域問(wèn)題。在這里分別分享兩種方法,分別在前端vue中解決和在后臺(tái)springboot中解決。2021-10-10vue從倉(cāng)庫(kù)state中取不到數(shù)據(jù)的問(wèn)題
這篇文章主要介紹了vue從倉(cāng)庫(kù)state中取不到數(shù)據(jù)的問(wèn)題及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-04-04詳解vue-cli項(xiàng)目中怎么使用mock數(shù)據(jù)
這篇文章主要介紹了vue-cli項(xiàng)目中怎么使用mock數(shù)據(jù),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-05-05vue2?element?實(shí)現(xiàn)表格點(diǎn)擊詳情返回時(shí)保留查詢參數(shù)的示例代碼
這篇文章主要介紹了vue2?element?實(shí)現(xiàn)表格點(diǎn)擊詳情返回時(shí)保留查詢參數(shù)的示例代碼,本文通過(guò)圖文示例代碼給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧2024-03-03