SvelteKit 3进入RC:配置迁至Vite 8并改用#lib
SvelteKit 3已进入候选发布阶段。这一版本重点不在新增大量功能,而是清理历史技术债、统一配置方式并进一步贴近Vite原生能力。若测试进展顺利,后续稳定版预计不会再加入破坏性调整。
配置机制是本次升级的核心变化之一。SvelteKit 2中的svelte.config.js被移除,相关内容改放到vite.config.ts,使Vite插件能够同步读取配置,不必等待完整的异步解析流程。该方案在2.62版本已开始引入,此次RC则完成了迁移确认。
路径别名也发生变化:原有的$lib将由#lib取代,后者依赖package.json中声明的Node原生子路径导入,而不是依靠Vite与TypeScript共同处理的框架专用路径。导入时还必须写明扩展名,例如将$lib/foo改成#lib/foo.js。官方提供了npx sv@next migrate sveltekit-3 --tasks all --confirm命令,帮助项目自动完成重构。
这项改动在开发者群体中引发了争议,有人认为#lib破坏了它与$app等其他别名的一致性,也希望能够继续自定义别名。维护者Rich Harris则表示,采用NodeNext规范会带来无扩展名导入问题,但开发者始终可以创建自己的别名,因此该取舍仍然值得推进。
其他调整包括让tsconfig.json继承$app/tsconfig而非生成的.svelte-kit配置;Service Worker改从$app/env、$app/paths和新的$app/manifest获取内容;显式环境变量结束实验阶段,并可选择通过Standard Schema进行校验。由于SvelteKit 3要求使用Svelte 5,+error.svelte将同时处理加载和渲染失败,所有错误都会经过handleError,堆栈也会附带Source Map。浅层路由则从pushState改为使用带shallow: true选项的goto。
底层依赖方面,SvelteKit 3要求Vite 8及其Rolldown打包器,以提升构建速度。团队没有采用FetchableDevEnvironment,理由是该方案会让框架承担过多复杂性。远程函数仍处于实验性标志下,它提供类型安全的客户端—服务器RPC能力,定位类似React Server Actions和Next.js服务器函数,团队认为其体验有望优于传统load函数与actions。
SvelteKit是Svelte官方应用框架,基于Vite构建并由Svelte团队维护,负责路由、服务端渲染、数据加载和部署适配器。自2022年末发布1.0以来,它已成为构建Svelte应用的默认方案,并以较小的运行时和响应式语法参与同Next.js、Remix等React框架的竞争。
本文基于公开渠道信息整理,内容可能存在不准确或遗漏之处,不代表本站立场,如内容涉及侵权或错误,请联系我们处理。
阅读原文