Electron Forge打包后public文件夹在asar中重复复制问题求助
解决Electron Forge + Vite + TypeScript打包体积翻倍问题
你的问题根源是public目录下的媒体文件被重复打包进了主进程和渲染进程的构建产物,导致体积从200MB翻倍到400MB。以下是具体解决步骤:
1. 调整Electron Forge的Vite配置,隔离主/渲染进程资源
在forge.config.ts中,给主进程的Vite配置添加排除规则,避免打包public目录的资源(主进程不需要访问这些静态媒体文件):
import type { ForgeConfig } from '@electron-forge/shared-types'; import { VitePlugin } from '@electron-forge/plugin-vite'; const config: ForgeConfig = { plugins: [ new VitePlugin({ // 主进程配置:排除public目录所有资源 main: { build: { rollupOptions: { external: [/^public\/.*/], }, }, }, // 渲染进程配置:统一静态资源目录,避免分散重复 renderer: { build: { assetsDir: 'assets', }, }, }), ], }; export default config;
2. 优化Vite静态资源处理逻辑
- 确保渲染进程的public资源只被复制一次:不要在主进程的Vite配置中设置
publicDir字段,让主进程完全跳过静态资源打包 - 若有自定义静态资源需求,可将媒体文件移至
src/renderer/assets目录,通过import方式引入,替代默认的public目录托管,让Vite精准控制打包范围
3. 清理构建缓存与冗余文件
- 在
package.json中添加清理脚本:"clean": "electron-forge clean",打包前执行npm run clean彻底清除旧构建产物,避免缓存导致的重复文件 - 关闭asar后,手动删除
.vite/build下的public目录,验证主进程运行不受影响,确认该资源确实无必要被主进程打包
4. 额外优化:压缩PNG图片
针对200MB的PNG文件,可通过Vite插件自动压缩:
- 安装插件:
npm install vite-plugin-imagemin --save-dev - 在渲染进程的Vite配置中启用:
import viteImagemin from 'vite-plugin-imagemin'; export default { plugins: [ viteImagemin({ pngquant: { quality: [0.6, 0.8], // 按需调整压缩质量范围 }, }), ], };
内容的提问来源于stack exchange,提问作者rap-2-h
相关产品推荐
相关产品推荐

