SvelteKit如何对外提供静态JS文件服务?
解决方案及问题分析
首先,你原来的文件存放位置不符合框架规范——结合Node适配器的SvelteKit场景中,src目录下的文件默认属于源码范畴,会被构建工具处理,不会直接复制到build目录。而供外部访问的独立静态脚本,应该放在项目根目录的static/文件夹下,这是框架约定的静态资源存放位置。
最优解决办法:调整文件位置
把src/lib/static/embed.js移动到项目根目录的static/文件夹下,比如static/embed.js。
- 开发模式下,访问路径变为
/embed.js - 执行
yarn build后,该文件会被自动复制到build文件夹根目录,生产环境同样可以通过/embed.js访问
若不想移动文件,可通过配置实现复制
如果坚持保留原文件位置,需要在vite配置中添加复制规则:
- 先安装依赖:
yarn add rollup-plugin-copy --dev
- 修改
svelte.config.js:
import { sveltekit } from '@sveltejs/kit/vite'; import { defineConfig } from 'vite'; import copy from 'rollup-plugin-copy'; export default defineConfig({ plugins: [ sveltekit(), copy({ targets: [ { src: 'src/lib/static/embed.js', dest: 'build' } ], hook: 'writeBundle' // 在构建完成后执行复制 }) ] });
额外说明
你的embed.js是供其他网站引用的独立脚本,完全不需要参与项目的编译打包,所以放在static/目录是最合理的选择,既符合框架规范,也能避免额外的配置成本。
内容的提问来源于stack exchange,提问作者nazaruk
相关产品推荐
相关产品推荐

