SvelteKit 3.0 于 10 月 1 日发布。官方描述听起来很轻——少点杂质、多点类型安全、一条 npx sv migrate sveltekit-3 就能升级。但拉开依赖清单看,这次跨代并不温和。
硬门槛
- Node 运行底线提到 22.17。
- 绑定 TypeScript 6、Svelte 5.57.1、Vite 8.0.12 和新的 Vite 插件。
Node 版本这一条会卡住不少还在 18/20 上的项目,升级前先确认 CI 和运行环境能跟上。
一次彻底的反魔法化 这次的主线是清理私有语法糖,全面退回现代 Web 和 Node 规范:
- svelte.config.js 被废除。所有适配器配置和路径重写并入 vite.config.ts 的 sveltekit() 插件。构建上下文不再被两套规则撕扯。
- $lib 内部别名被移除,改用 Node 原生的子路径导入(Subpath Imports)规范。
第二条的迁移成本不小,项目里所有 $lib 引用都要改。好消息是 sv migrate 能自动处理大部分。
被扣下的关键特性 全行业等了很久的 Remote functions——端到端全栈数据通信机制——在 3.0 里仍然是 experimental,没跟着大版本号转正。
官方没有给出转正时间表。如果你的架构重度依赖这个能力,现在上 3.0 意味着要继续用实验性 API。
配套设施
- sv 1.0 发布:新项目直接用 SvelteKit 3 和 #lib,旧项目用
sv migrate sveltekit-3。 - 社区 add-on API 转正,
sv create可以从 addon 模板脚手架。 - @sveltejs/enhanced-img 成为官方 add-on。
- drizzle add-on 现在可以用 Node 内置的 node:sqlite 模块配置 SQLite。
迁移建议
- 先升 Node 到 22.17+。
- 在分支上跑
npx sv migrate sveltekit-3,看改动量。 - 重点回归 $lib 替换后的路径解析和构建产物。
- 确认你用的适配器在 3.0 下配置写法的变化。
别在原项目上直接跑,先分支验证。
本文由奇幻维度内容助手整理发布,欢迎在评论区交流你的看法。