使用vite發(fā)布app存在的所有問(wèn)題解決方法
1.打包項(xiàng)目的時(shí)候,dist里的css和js等文件都在assets,沒(méi)分css和js文件,需要在vite.config.ts配置。
build: { rollupOptions: { output: { // 最小化拆分包 manualChunks: (id) => { if (id.includes('node_modules')) { return id.toString().split('node_modules/')[1].split('/')[0].toString() } }, // 用于從入口點(diǎn)創(chuàng)建的塊的打包輸出格式[name]表示文件名,[hash]表示該文件內(nèi)容hash值 entryFileNames: 'js/[name].[hash].js', // 用于命名代碼拆分時(shí)創(chuàng)建的共享塊的輸出命名 chunkFileNames: 'js/[name].[hash].js', // 用于輸出靜態(tài)資源的命名,[ext]表示文件擴(kuò)展名 assetFileNames: '[ext]/[name].[hash].[ext]' // 拆分js到模塊文件夾 // chunkFileNames: (chunkInfo) => { // const facadeModuleId = chunkInfo.facadeModuleId ? chunkInfo.facadeModuleId.split('/') : []; // const fileName = facadeModuleId[facadeModuleId.length - 2] || '[name]'; // return `js/${fileName}/[name].[hash].js`; // }, } } }
這樣就已經(jīng)完成了拆分css和js等文件
2.這邊還需要加一下vite的版本問(wèn)題,不然后續(xù)打包的app,在android或者iOS下載打開(kāi)可能是白屏的
一、問(wèn)題
在使用vue3.2和vite2.0+開(kāi)發(fā)一個(gè)移動(dòng)端H5,測(cè)試時(shí)發(fā)現(xiàn)很多低版本的安卓手機(jī)瀏覽器出現(xiàn)白屏的現(xiàn)象,而ios機(jī)型基本上是好的,原因是很多低版本瀏覽器并不支持原生ESM導(dǎo)入的方式,下面給出解決方案:
二、兼容原生ESM的瀏覽器
默認(rèn)情況下,Vite 的目標(biāo)瀏覽器是指能夠 支持原生 ESM script 標(biāo)簽 和 支持原生 ESM 動(dòng)態(tài)導(dǎo)入 的。作為參考,Vite 使用這個(gè) browserslist 作為查詢(xún)標(biāo)準(zhǔn):
Chrome >=87
Firefox >=78
Safari >=13
Edge >=88
三、解決方案
步驟一: vite.config.ts里 build.target 配置項(xiàng) 指定構(gòu)建目標(biāo)為 es2015 步驟二: 通過(guò)插件 @vitejs/plugin-legacy 來(lái)自動(dòng)生成傳統(tǒng)瀏覽器的 chunk 及與其相對(duì)應(yīng) ES 語(yǔ)言特性方面的 polyfill。兼容版的 chunk 只會(huì)在不支持原生 ESM 的瀏覽器中進(jìn)行按需加載。
1、安裝@vitejs/plugin-legacy
npm i @vitejs/plugin-legacy
2.配置 vite.config.ts
import legacy from "@vitejs/plugin-legacy"; export default defineConfig({ plugins = [ vue(), legacy({ targets: [ "> 1%, last 1 version, ie >= 11", "safari >= 10", "Android > 39", "Chrome >= 60", "Safari >= 10.1", "iOS >= 10.3", "Firefox >= 54", "Edge >= 15" ], additionalLegacyPolyfills: ["regenerator-runtime/runtime"], polyfills: ["es.promise.finally", "es/map", "es/set"], modernPolyfills: ["es.promise.finally"] }) ]; build: { target: 'es2015' } });
3.Vite打包后的dist不能直接在瀏覽器打開(kāi)
原因
Vite 本身依賴(lài)于原生ES模塊來(lái)做模塊加載,而原生ES模塊是不支持 file:// 本地訪問(wèn)的。
解決辦法
方案一:使用http-server插件啟動(dòng)
1.安裝node.js;(已安裝跳過(guò))
2.安裝http-server。
npm install http-server -g
或
yarn global add http-server
3、進(jìn)入dist根目錄執(zhí)行啟動(dòng)項(xiàng)目
http-server
這樣就可以在dist文件里運(yùn)行了。
4.在HBuilderX發(fā)布app
1.打開(kāi)HBuilderX新建一個(gè)5+APP項(xiàng)目,并把vue中dist里面的所有文件復(fù)制過(guò)來(lái)(只保留manifest.json文件,其他換成dist文件)
2.在manifest.json選擇對(duì)應(yīng)的信息,
3.點(diǎn)擊模板配置需關(guān)掉這2個(gè)選項(xiàng)
4.然后點(diǎn)擊發(fā)行云打包,選擇以下幾個(gè)選項(xiàng)
5.打包成功發(fā)送這個(gè)文件到QQ,手機(jī)下載即可
總結(jié)
到此這篇關(guān)于使用vite發(fā)布app存在的所有問(wèn)題解決方法的文章就介紹到這了,更多相關(guān)vite發(fā)布app問(wèn)題內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
使用Vue3實(shí)現(xiàn)交互式雷達(dá)圖的代碼實(shí)現(xiàn)
雷達(dá)圖是一種可視化數(shù)據(jù)的方式,用于比較多個(gè)類(lèi)別中不同指標(biāo)的相對(duì)值,它適用于需要展示多個(gè)指標(biāo)之間的關(guān)系和差異的場(chǎng)景,本文給大家介紹了如何用Vue3輕松創(chuàng)建交互式雷達(dá)圖,需要的朋友可以參考下2024-06-06vue+element實(shí)現(xiàn)打印頁(yè)面功能
這篇文章主要介紹了vue+element實(shí)現(xiàn)打印頁(yè)面功能,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下2019-05-05vue 使用v-if切換輸入框時(shí)導(dǎo)致輸入框的數(shù)據(jù)內(nèi)容沒(méi)有清空的問(wèn)題解決(兩種解決方法)
這篇文章主要介紹了vue 使用v-if切換輸入框時(shí)導(dǎo)致輸入框的數(shù)據(jù)內(nèi)容沒(méi)有清空的問(wèn)題解決,本文給大家分享兩種解決方法,需要的朋友可以參考下2023-05-05vue項(xiàng)目中向數(shù)組添加元素的3種方式
這篇文章主要給大家介紹了關(guān)于vue項(xiàng)目中向數(shù)組添加元素的3種方式,在Vue中添加元素到數(shù)組非常簡(jiǎn)單,文中通過(guò)代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用vue具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-10-10Vue中div contenteditable 的光標(biāo)定位方法
今天小編就為大家分享一篇Vue中div contenteditable 的光標(biāo)定位方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-08-08vue3.x 使用jsplumb實(shí)現(xiàn)拖拽連線
這篇文章主要為大家詳細(xì)介紹了vue3.x 使用jsplumb實(shí)現(xiàn)拖拽連線,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03vue-iview動(dòng)態(tài)新增和刪除的方法
這篇文章主要為大家詳細(xì)介紹了vue-iview動(dòng)態(tài)新增和刪除的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-06-06Vue中mixins的使用方法以及實(shí)際項(xiàng)目應(yīng)用指南
vue中提供了一種混合機(jī)制--mixins,用來(lái)更高效的實(shí)現(xiàn)組件內(nèi)容的復(fù)用,下面這篇文章主要給大家介紹了關(guān)于Vue中mixins的使用方法以及實(shí)際項(xiàng)目應(yīng)用指南,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-03-03