vue3+ts+vite+electron打包exe

news2024/11/20 10:34:14

文章目录

    • 一. 前言
    • 二. 准备写好的vue项目打包
      • 2.1 修改ts打包代码检测.这个比较烦人. 在`package.json`中
    • 2.2 配置打包参数
      • 2.3 打包vue
    • 三. 打包exe
      • 3.1 拉取electron官方demo
      • 3.2 下载打包插件
      • 3.3 在electron-quick-start项目中找到入口文件 main.js ,修改打包的文件路径为我们的index.html
      • 3.4 在electron-quick-start项目中,进入 package.json ,在 scripts 中添加 packager 指令
      • 3.5 运行打包命令


一. 前言

该种方式十分简便.缺点是必须用vue开发完才能打包客户端.无法实时查看客户端样式


二. 准备写好的vue项目打包

我使用的是vue3,ts,vite.

2.1 修改ts打包代码检测.这个比较烦人. 在package.json

  "scripts": {
    "dev": "vite",
    "build": "vite build",
    "preview": "vite preview"
  }

2.2 配置打包参数

用vite+ts构建的配置是vite.config.ts 打包样例模板如下:
打包期间期间会报错,你需要按提示安装相应组件

import { defineConfig } from 'vite'
import { resolve } from "path"; // 主要用于alias文件路径别名
import vue from '@vitejs/plugin-vue'
import vueJsx from "@vitejs/plugin-vue-jsx"; // jsx插件

export default defineConfig({
    plugins: [vue(), vueJsx()], // 配置需要使用的插件列表
    base: './',   // 在生产中服务时的基本公共路径
    publicDir: 'public',  // 静态资源服务的文件夹, 默认"public"
    resolve: {
        alias: {
            "@": resolve(__dirname, './src'), // 这里是将src目录配置别名为 @ 方便在项目中导入src目录下的文件
        }
    },
    // 引入第三方的配置,强制预构建插件包
    optimizeDeps: {
        include: ['echarts', 'axios', 'mockjs'],
    },
    css: {
        preprocessorOptions: {
            scss: {
		charset: false, // 关闭编译时 字符编码 报错问题
	        javascriptEnabled: true,
	        additionalData: `@import "${resolve(__dirname, 'src/assets/css/var.scss')}";`,
	    },
	},
    },
    json: { 
        //是否支持从 .json 文件中进行按名导入 
        namedExports: true,
        //若设置为 true 导入的json会被转为 export default JSON.parse("..") 会比转译成对象字面量性能更好 
        stringify:false, 
    },
    //继承自 esbuild 转换选项,最常见的用例是自定义 JSX 
    esbuild: { 
        jsxFactory: "h",
        jsxFragment: "Fragment", 
        jsxInject:`import Vue from 'vue'`
    },
    // 打包配置
    build: {
        target: 'modules', // 设置最终构建的浏览器兼容目标。modules:支持原生 ES 模块的浏览器
        outDir: 'dist', // 指定输出路径
        assetsDir: 'assets', // 指定生成静态资源的存放路径
        assetsInlineLimit: 4096, // 小于此阈值的导入或引用资源将内联为base64编码,设置为0可禁用此项。默认4096(4kb)
        cssCodeSplit: true, // 启用/禁用CSS代码拆分,如果禁用,整个项目的所有CSS将被提取到一个CSS文件中,默认true
        sourcemap: false, // 构建后是否生成 source map 文件
        minify: 'terser', // 混淆器,terser构建后文件体积更小
        write: true,   //设置为 false 来禁用将构建后的文件写入磁盘  
        emptyOutDir: true,  //默认情况下,若 outDir 在 root 目录下,则 Vite 会在构建时清空该目录。  
        chunkSizeWarningLimit: 500,  //chunk 大小警告的限制 
        terserOptions: {   
            compress: { 
                drop_console: true,
                drop_debugger: true, 
            },
        },   //去除 console debugger
    },
    // 本地运行配置,及反向代理配置
    server: {
        host: 'localhost', // 指定服务器主机名
        port: 3000, // 指定服务器端口
        open: true, // 在服务器启动时自动在浏览器中打开应用程序
        strictPort: false, // 设为 false 时,若端口已被占用则会尝试下一个可用端口,而不是直接退出
        https: false, // 是否开启 https
        cors: true, // 为开发服务器配置 CORS。默认启用并允许任何源
        // proxy: { // 为开发服务器配置自定义代理规则
        //     // 字符串简写写法 
        //     '/foo': 'http://192.168.xxx.xxx:xxxx', 
        //     // 选项写法
        //     '/api': {
        //         target: 'http://192.168.xxx.xxx:xxxx', //代理接口
        //         changeOrigin: true,
        //         rewrite: (path) => path.replace(/^\/api/, '')
        //     }
        // }
    }
})

2.3 打包vue

做完如上步骤那么我们就可以直接:

npm install build

在这里插入图片描述
在这里插入图片描述

至此我们的vue项目打包完毕


三. 打包exe

3.1 拉取electron官方demo

git clone https://github.com/electron/electron-quick-start

在这里插入图片描述

3.2 下载打包插件

npm install electron-packager --save-dev

3.3 在electron-quick-start项目中找到入口文件 main.js ,修改打包的文件路径为我们的index.html

在这里插入图片描述

// main.js 原始内容 
mainWindow.loadFile('index.html') 
// 修改后的内容 
mainWindow.loadFile('./dist/index.html')

3.4 在electron-quick-start项目中,进入 package.json ,在 scripts 中添加 packager 指令

  "scripts": {
    "start": "electron .",
    "packager": "electron-packager ./ App --platform=win32 --arch=x64 --overwrite"
  },

3.5 运行打包命令

npm run packager 

在这里插入图片描述
大功告成.

在这里插入图片描述

文章借鉴自 Vue项目打包成exe可执行文件(无瑕疵,完美版) 感谢每位开源大佬!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/653481.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

差值结构的运动

( A, B )---3*30*2---( 1, 0 )( 0, 1 ) 让网络的输入有3个节点,训练集AB各由5张二值化的图片组成,让B全是0,让差值结构的5行分别有0,1,2,2,2个1,3列分别有1,3&#xff0…

知了堂Java V9.0重磅升级,真的很硬核!

“2023年,Java还值得学吗?” 说实话,Java自1995年诞生起,至今还难逢敌手,没有任何编程语言能够取代它的地位。不过随着互联网、计算机技术的发展,Java应用领域越来越广泛,因此也对掌握这门语言…

Vue全家桶(二):Vue中的axios异步通信

目录 1. Axios1.1 Axios介绍1.2 为什么使用Axios1.3 Axios API1.3 Vue使用axios向服务器请求数据1.4 Vue使用axios向服务器提交数据1.5 Vue封装网络请求 2. 使用Vue-cli解决Ajax跨域问题3. GitHub用户搜索案例4. Vue-resource 1. Axios 1.1 Axios介绍 Axios 是一个开源的可以…

flexible.js + rem 适配布局

什么是:flexible.js ?? flexible.js 是手机淘宝团队出的移动端布局适配库不需要在写不同屏幕的媒体查询,因为里面js做了处理原理是把当前设备划分为10等份,但是不同设备下,比例还是一致的。要做的&#xf…

【亲测解决】import torch 出现段错误,报错信息 Segmentation fault

微信公众号:leetcode_algos_life import torch 出现段错误 【问题】【解决方案】 【问题】 安装pytorch-gpu版本,安装完成后,import torch发现报错直接返回,报错信息如下: Segmentation fault【解决方案】 Linux环境…

查看虚拟机网络IP和网关

查看虚拟网络编辑器和修IP地址: 查看网关: 查看windows:环境的中VMnet8网络配置(ipconfig指令): 查看linux的配置ifconfig: ping测试主机之间网络连通性: 基本语法 ping 目的主机(功能描述:测试当前服务器是否可以连接目的主机) 应用实例 测…

一秒教你搞定前端打包上传后路由404的问题!

1、问题描述 前端实现权限管理后,本地路由跳转正常,打包上传线上出现前404找不到路由路径问题 报如下错误: 2、错误原因 打包之后根路径变化,前端没有将获取到的用户菜单权限中的component进行转换,导致上传后路径错误 3、解决…

Gurobi许可证获取并部署到Pycharm中

获取Gurobi许可证 海外版(Gurobi)~ 可略过 海外Gurobi地址但是就算用高校身份注册还是无法获取许可证图例 原因;学校的网关没有将本校的 IP 地址标注为学术机构,那么会出现 Error 303/305 错误,IP 验证不会成功&…

第三章_基于zookeeper实现分布式锁

实现分布式锁目前有三种流行方案,分别为基于数据库、Redis、Zookeeper的方案。这里主要介绍基于zk怎么实现分布式锁。在实现分布式锁之前,先回顾zookeeper的知识点。 知识点回顾 Zookeeper(业界简称zk)是一种提供配置管理、分布式…

NIFI1.21.0_Mysql到Mysql增量CDC同步中_日期类型_以及null数据同步处理补充---大数据之Nifi工作笔记0057

NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_根据binlog实现update数据实时同步_实际操作05---大数据之Nifi工作笔记0044 具体的,之前已经写过,如何在NIFI中实现MySQL的增量数据同步,但是写的简单了,因为,比如在插入的时候,更新的时候,仅仅是写死的某…

第五节 利用Ogre 2.3实现雨,雪,爆炸,飞机喷气尾焰等粒子效果

本节主要学习如何使用Ogre2.3加载粒子效果。为了学习方便,直接将官方粒子模块Sample_ParticleFX单独拿出来编译,学习如何实现粒子效果。 一. 前提须知 如果参考官方示例建议用最新版的Ogre 2.3.1。否则找不到有粒子效果的示例。不要用官网Ogre2.3 scri…

【微信小程序开发】第 8 课 - 小程序 API 的 3 大分类

欢迎来到博主 Apeiron 的博客,祝您旅程愉快 ! 时止则止,时行则行。动静不失其时,其道光明。 目录 1、小程序 API 概述 2、小程序 API 的 3 大分类 3、总结 1、小程序 API 概述 小程序中的 API 是由宿主环境提供的,…

一款基于 SpringCloud 的电商商城系统,小程序+管理端一套带走

项目介绍 Smart Shop 是一款基于 Spring Cloud MybatisPlusXXL-JOBredisVue 的前后端分离、分布式、微服务架构的 Java 商城系统,采用稳定框架开发及优化核心,减少依赖,具备出色的执行效率,扩展性、稳定性高,H5/小程序…

pnpm + monorepo架构思想小试牛刀

写在前面 今天要写的是关于一种前端全新架构的方式,monorepo这是目前相对来讲比较新的一种前端架构,整好趁着最近在学,就利用这个平台记录一下学习的一个过程,上一篇文章更新的是react,后面也会一样更新,今…

深入理解Java虚拟机jvm-运行时数据区域(基于OpenJDK12)

运行时数据区域 运行时数据区域程序计数器Java虚拟机栈本地方法栈Java堆方法区运行时常量池直接内存 运行时数据区域 Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域 有各自的用途,以及创建和销毁的时间,有的…

持续改进与创新:水库大坝安全管理方式

随着工业的快速发展,大坝建设已成为经济发展的重要部分。然而,由于自然环境的破坏以及人类因素的干扰,大坝的安全问题备受关注。每年都有不少大坝事故爆发,造成无法预估的损失。据统计,截至2006年我国共有3260座水库已…

【AntDB数据库】AntDB数据库跨地域多中心部署

跨地域多中心部署 **** 某省核心账务库案例 **** 通信行业核心业务系统已经与某款国外成熟商业数据库深度捆绑多年,为改变这一现状,实现数据库“自主可控”的目标,某省经过多轮调研选型与评测最终选择AntDB分布式内存数据库进行核心产生系统…

Linux线程同步(上)

文章目录 1. 同步的概念2. 条件变量函数2.1 等待函数2.2 样例 3. 生产者消费者模型4. 阻塞队列4.1 模拟阻塞队列的生产消费模型4.2 构造函数和析构函数4.3 生产接口和消费接口4.4 创建线程进行测试 1. 同步的概念 互斥可能会导致一个执行流长时间得不到某种资源。也叫饥饿问题…

健身房小程序怎么做?

如果把预约小程序用好了,会给你的场馆经营带来很多意想不到的好处,解决用户线上约客的问题,顶多只发挥了 20% 的作用,那另外 80% 的用法是什么呢? 高效推荐名片服务行业做的是口碑,用户靠的是转介绍&#x…

SignalR快速入门 ~ 仿QQ即时聊天,消息推送,单聊,群聊,多群公聊(基础=》提升)

SignalR快速入门 ~ 仿QQ即时聊天,消息推送,单聊,群聊,多群公聊(基础》提升,5个Demo贯彻全篇,感兴趣的玩才是真的学) 官方demo:http://www.asp.net/signalr/overview/getting-started…