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

Electron/Svelte项目中如何正确引用打包后的assets静态资源?

静态资源存放与引用方案

你在Svelte组件中打印__dirname输出public路径是Svelte模板的默认行为,所有编译后的前端静态资源都会以public目录作为服务根路径,assets文件夹的存放位置根据资源使用场景选就行:

  • 不需要构建处理、运行时通过固定路径读取的资源(比如全局配置JSON、大尺寸媒体文件、不需要压缩重命名的静态内容):直接放到public目录下。引用时直接写根路径即可,比如public下存放assets文件夹,图片引用路径写/assets/xxx.png,读取JSON直接用fetch('/assets/xxx.json')即可。Electron-Builder打包时会完整保留public目录的结构,不会出现生产环境路径失效的问题。
  • 需要构建工具处理的资源(比如组件内复用的小图标、需要压缩/哈希缓存的样式图片、需要模块化引入的配置文件):可以留在src/assets目录下,通过ES模块相对路径导入即可,示例代码:
<script>
  import appIcon from './assets/icon.png'
  import appConfig from './assets/config.json'
</script>

<img src={appIcon} alt="应用图标" />
<p>版本号:{appConfig.version}</p>

这类资源在执行构建时,会被Rollup/Vite自动处理路径、压缩、生成哈希文件名,最终输出到public的构建产物目录,不需要手动迁移文件。

注意:src目录本身不会被完整输出到编译结果中,所有存放在src下但没有被import引入的文件,构建后都会被丢弃,不要用__dirname拼接路径读取src下未导入的文件,一定会出现404错误。

Git忽略配置规则

build目录是否加入.gitignore要先区分目录的实际作用:

  • Svelte编译生成的public/build目录:必须加入忽略列表。这个目录的内容是每次执行构建命令自动生成的临时产物,包含编译后的JS、CSS、处理过的静态资源,提交到仓库只会产生无意义的diff,还容易因为本地构建缓存不一致导致线上问题。
  • Electron-Builder打包生成的根目录build/dist目录(存放exe、dmg等安装包的输出目录):必须加入忽略列表。安装包本身体积大,属于可重复构建的产物,不需要纳入版本控制。
  • 特殊情况:如果你在根目录新建build文件夹存放Electron-Builder需要的原生资源(比如安装包图标、自定义协议配置、安装侧栏图片等构建依赖的源文件),这个目录属于源码的一部分,不能加入忽略列表,需要正常提交到仓库。

内容的提问来源于stack exchange,提问作者spring

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 16:57:23