Skip to content
返回部署

部署 Svelte 应用

用 Vite 将 Svelte 组件编译为原生 JS,部署最小静态包到任何主机。

平台入门

为什么

Svelte 编译消除框架运行时,包比 React/Vue 小 10-50%。无虚拟 DOM 和最小运行时意味着慢设备加载更快、带宽成本更低。

平台即服务采用率 2024 年增长 24%,团队从虚拟机管理转向 git push 部署。the cloud infrastructure market reached $330B in 2024, growing 22% year-over-year (Synergy Research),PaaS 层捕获了大多数新工作负载。

何时使用

性能关键 SPA、嵌入式小部件和低带宽受众选 Svelte。需要路由、SSR 或适配器时用 SvelteKit。

如何做

1. 构建 — npm run build 输出 dist/ 含 index.html + 打包 JS/CSS 2. SPA 回退 — svelte-spa-router 默认用哈希路由(无需服务器配置) 3. 部署 — 上传 dist/ 到任何静态主机 4. Vite 配置 — 自定义 base、target、minify 5. 环境变量 — import.meta.env.VITE_* 构建时 6. 无 SSR — SSR 用 SvelteKit 配相应适配器

示例

// vite.config.ts import { defineConfig } from "vite"; import { svelte } from "@sveltejs/vite-plugin-svelte"; export default defineConfig({ plugins: [svelte()], build: { target: "es2020", minify: "esbuild" }, }); // App.svelte — 组件编译为原生 JS <script> let count = 0; </script> <button on:click={() => count++}>{count}</button> // package.json { "scripts": { "dev": "vite", "build": "vite build", "preview": "vite preview" } } // 部署:npm run build && npx wrangler pages deploy dist

常见问题

  • ⚠用 Svelte 路由而无 SvelteKit — 无 SSR、无文件路由,仅限 SPA
  • ⚠旧浏览器构建失败 — target 太高(es2022),降到 es2017 兼容
  • ⚠CSS 未提取 — Vite 默认内联样式,大应用配置 build.cssCodeSplit

最佳实践

  • ✓单页小部件以外的任何场景用 SvelteKit — 处理路由、SSR 和适配器
  • ✓启用 vite-plugin-svelte 预处理 TypeScript 和 SCSS 提升开发体验
  • ✓设置健康检查和优雅关闭 — 处理 SIGTERM 以在退出前排空进行中的请求

常见问题解答