使用vite發(fā)布app存在的所有問題解決方法
1.打包項目的時候,dist里的css和js等文件都在assets,沒分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() } }, // 用于從入口點創(chuàng)建的塊的打包輸出格式[name]表示文件名,[hash]表示該文件內(nèi)容hash值 entryFileNames: 'js/[name].[hash].js', // 用于命名代碼拆分時創(chuàng)建的共享塊的輸出命名 chunkFileNames: 'js/[name].[hash].js', // 用于輸出靜態(tài)資源的命名,[ext]表示文件擴展名 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的版本問題,不然后續(xù)打包的app,在android或者iOS下載打開可能是白屏的
一、問題
在使用vue3.2和vite2.0+開發(fā)一個移動端H5,測試時發(fā)現(xiàn)很多低版本的安卓手機瀏覽器出現(xiàn)白屏的現(xiàn)象,而ios機型基本上是好的,原因是很多低版本瀏覽器并不支持原生ESM導入的方式,下面給出解決方案:
二、兼容原生ESM的瀏覽器
默認情況下,Vite 的目標瀏覽器是指能夠 支持原生 ESM script 標簽 和 支持原生 ESM 動態(tài)導入 的。作為參考,Vite 使用這個 browserslist 作為查詢標準:
Chrome >=87
Firefox >=78
Safari >=13
Edge >=88
三、解決方案
步驟一: vite.config.ts里 build.target 配置項 指定構(gòu)建目標為 es2015 步驟二: 通過插件 @vitejs/plugin-legacy 來自動生成傳統(tǒng)瀏覽器的 chunk 及與其相對應 ES 語言特性方面的 polyfill。兼容版的 chunk 只會在不支持原生 ESM 的瀏覽器中進行按需加載。
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不能直接在瀏覽器打開
原因
Vite 本身依賴于原生ES模塊來做模塊加載,而原生ES模塊是不支持 file:// 本地訪問的。
解決辦法
方案一:使用http-server插件啟動
1.安裝node.js;(已安裝跳過)
2.安裝http-server。
npm install http-server -g
或
yarn global add http-server
3、進入dist根目錄執(zhí)行啟動項目
http-server
這樣就可以在dist文件里運行了。
4.在HBuilderX發(fā)布app
1.打開HBuilderX新建一個5+APP項目,并把vue中dist里面的所有文件復制過來(只保留manifest.json文件,其他換成dist文件)
2.在manifest.json選擇對應的信息,
3.點擊模板配置需關掉這2個選項
4.然后點擊發(fā)行云打包,選擇以下幾個選項
5.打包成功發(fā)送這個文件到QQ,手機下載即可
總結(jié)
到此這篇關于使用vite發(fā)布app存在的所有問題解決方法的文章就介紹到這了,更多相關vite發(fā)布app問題內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
使用Vue3實現(xiàn)交互式雷達圖的代碼實現(xiàn)
雷達圖是一種可視化數(shù)據(jù)的方式,用于比較多個類別中不同指標的相對值,它適用于需要展示多個指標之間的關系和差異的場景,本文給大家介紹了如何用Vue3輕松創(chuàng)建交互式雷達圖,需要的朋友可以參考下2024-06-06vue 使用v-if切換輸入框時導致輸入框的數(shù)據(jù)內(nèi)容沒有清空的問題解決(兩種解決方法)
這篇文章主要介紹了vue 使用v-if切換輸入框時導致輸入框的數(shù)據(jù)內(nèi)容沒有清空的問題解決,本文給大家分享兩種解決方法,需要的朋友可以參考下2023-05-05Vue中div contenteditable 的光標定位方法
今天小編就為大家分享一篇Vue中div contenteditable 的光標定位方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-08-08