vite打包vue3项目,可以用file://协议访问(可以在android、electron中直接访问)

vue3作为国内主流开发框架,而vite又是vue团队推荐打包工具,在大多数的项目中都是部署在服务器上,通过http://协议访问ip、域名,但是在一些混合式开发如android或者electron中需要提供的html页面,然后使用file://协议访问。在这样的背景下就需要我们使用vite打包vue3项目支持file://协议访问。通过查找相关资料实现逻辑主要是打包后要支持非esmodule的方式,

var code = "cc1be642-8c76-423f-a365-35d09f109f3a"

目前已经搜集到两种方案:

方案一:打包成一个文件

step1:安装 vite-plugin-singlefile

npm i vite-plugin-singlefile

step2: 配置@vite-plugin-singlefile相关内容,在vite.config.ts(js)中修改

import { defineConfig } from 'vite';
import vue from '@vitejs/plugin-vue';
import AutoImport from 'unplugin-auto-import/vite';
import Components from 'unplugin-vue-components/vite';
import { ElementPlusResolver } from 'unplugin-vue-components/resolvers';
import { viteSingleFile } from 'vite-plugin-singlefile';
// https://vitejs.dev/config/
export default defineConfig({
  plugins: [
    vue(),
    viteSingleFile(),
    AutoImport({
      resolvers: [ElementPlusResolver()],
    }),
    Components({
      resolvers: [ElementPlusResolver()],
    }),
  ],
  build: {
    minify: false,
  },
});

step3: 进行打包

一般正常的项目直接build

step4:测试

e354411958e82021d072654cff3dcf28.jpeg

方案二:打包成多文件,需要改动部分

step1: 安装 @vitejs/plugin-legacy

npm i @vitejs/plugin-legacy

step2: 配置@vitejs/plugin-legacy相关内容,在vite.config.ts(js)中修改

// 引入
import legacy from '@vitejs/plugin-legacy';
// 插件处
plugins:[
  legacy({
    targets:['defaults','not IE 11']
    }),
   vue()
]

step3: 进行打包

一般正常的项目直接build

step4:修改打包后的文件

f2b7dbde4820ecc97f484cc0f8f9715e.jpeg
335e1506cdc1a3ae4ef5d0649badc764.png
df40ab34e9a055447854fe1bdfa99d50.png

step5: 进行测试

9d6d31c4a85d1839d77b50c51c868532.jpeg

到此结束

注:快捷替换脚本(目前测试有点问题)

/**

 * vue 一键修复 改为本地

 * vite.config.js 请先配置 @vitejs/plugin-legacy 和 base:'./'

 * 参考:http://events.jianshu.io/p/d44d14bc5344

 * 配置完成后 路径正常后 再 node toFile.js

 * 作者:Yoyo

 */


import path from 'path';

import fs from 'fs';

console.time('转换耗时');

const distPath = './dist/index.html';//打包路径的index.html

let htmlText = fs.readFileSync(distPath, 'utf8');

let resultText = '';

let htmlArr = htmlText.split(/\r?\n/) || [];

htmlArr.forEach(str => {

    str = str.replace(/\s?nomodule\s?/g,' ');

    str = str.replace(/\s?crossorigin\s?/g,' ');

    str = str.replace(/data-src/g,'src');

    if(!/type="module"/i.test(str)) resultText += str;

});

fs.writeFileSync(distPath,resultText,'utf8');

console.timeEnd('转换耗时');
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
要将 Vite + Vue 3 项目添加到 Electron ,你需要进行以下步骤: 1. 首先,确保你已经安装了 Node.js 和 Electron。可以通过以下命令来安装它们: ``` npm install -g electron ``` 2. 接下来,你需要在项目根目录下创建一个名为 `main.js` 的文件,这将是 Electron 主进程的入口文件。在该文件,你需要编写一些代码来创建 Electron 窗口,以及将 Vite + Vue 3 项目加载到窗口。可以参考以下示例代码: ```js const { app, BrowserWindow } = require('electron') const path = require('path') function createWindow() { const mainWindow = new BrowserWindow({ width: 800, height: 600, webPreferences: { nodeIntegration: true, contextIsolation: false, enableRemoteModule: true, }, }) mainWindow.loadURL(`file://${path.join(__dirname, 'index.html')}`) } app.whenReady().then(() => { createWindow() app.on('activate', function () { if (BrowserWindow.getAllWindows().length === 0) createWindow() }) }) app.on('window-all-closed', function () { if (process.platform !== 'darwin') app.quit() }) ``` 3. 然后,你需要在 `package.json` 文件添加一些脚本,以便启动 Electron 应用程序。可以参考以下示例代码: ```json { "scripts": { "start": "vite dev", "electron": "electron ." } } ``` 4. 最后,你需要在命令行运行以下命令来启动 Electron 应用程序: ``` npm run start ``` 在另一个终端窗口运行以下命令: ``` npm run electron ``` 这将启动 Vite + Vue 3 项目Electron 应用程序。现在,你可以在 Electron 窗口看到你的 Vue 3 应用程序了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值