You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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插件自动压缩:

  1. 安装插件:npm install vite-plugin-imagemin --save-dev
  2. 在渲染进程的Vite配置中启用:
import viteImagemin from 'vite-plugin-imagemin';

export default {
  plugins: [
    viteImagemin({
      pngquant: {
        quality: [0.6, 0.8], // 按需调整压缩质量范围
      },
    }),
  ],
};

内容的提问来源于stack exchange,提问作者rap-2-h

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 05:32:11