构建和部署
Cloudflare Pages
在 GitHub 上编辑此页面要部署到 Cloudflare Pages,请使用 adapter-cloudflare
。
当你使用 adapter-auto
时,此适配器将默认安装。如果你计划继续使用 Cloudflare Pages,你可以从 adapter-auto
切换到直接使用此适配器,以便在本地开发期间模拟特定于 Cloudflare Workers 的值,自动应用类型声明,并提供设置特定于 Cloudflare 的选项的能力。
比较永久链接
adapter-cloudflare
– 支持所有 SvelteKit 功能;为 Cloudflare Pages 构建adapter-cloudflare-workers
– 支持所有 SvelteKit 功能;为 Cloudflare Workers 构建adapter-static
– 仅生成客户端静态资产;与 Cloudflare Pages 兼容
用法永久链接
使用 npm i -D @sveltejs/adapter-cloudflare
安装,然后将适配器添加到你的 svelte.config.js
ts
importCannot find module '@sveltejs/adapter-cloudflare' or its corresponding type declarations.2307Cannot find module '@sveltejs/adapter-cloudflare' or its corresponding type declarations.adapter from'@sveltejs/adapter-cloudflare' ;export default {kit : {adapter :adapter ({// See below for an explanation of these optionsroutes : {include : ['/*'],exclude : ['<all>']},platformProxy : {persist : './your-custom-path'}})}};
选项永久链接
routes永久链接
允许您自定义由 adapter-cloudflare
生成的 _routes.json
文件。
include
定义将调用函数的路由,默认为['/*']
exclude
定义不会调用函数的路由 — 这是提供应用程序静态资源的更快速、更便宜的方式。此数组可以包含以下特殊值<build>
包含应用程序的构建工件(由 Vite 生成的文件)<files>
包含static
目录的内容<prerendered>
包含预渲染页面的列表<all>
(默认值)包含以上所有内容
您可以最多有 100 个 include
和 exclude
规则组合。通常您可以省略 routes
选项,但是如果(例如)您的 <prerendered>
路径超过该限制,您可能会发现手动创建包含 '/articles/*'
而不是自动生成的 ['/articles/foo', '/articles/bar', '/articles/baz', ...]
的 exclude
列表很有用。
platformProxy永久链接
模拟的 platform.env
本地绑定的首选项。请参阅 getPlatformProxy Wrangler API 文档以获取完整选项列表。
部署永久链接
请遵循 Cloudflare Pages 入门指南 开始。
配置项目设置时,您必须使用以下设置
- 框架预设 – SvelteKit
- 构建命令 –
npm run build
或vite build
- 构建输出目录 –
.svelte-kit/cloudflare
运行时 API永久链接
env
对象包含项目的 绑定,这些绑定包括 KV/DO 命名空间等。它通过 platform
属性以及 context
、caches
和 cf
传递给 SvelteKit,这意味着您可以在钩子和端点中访问它
ts
export async functionBinding element 'request' implicitly has an 'any' type.POST ({, request }) { platform
Binding element 'platform' implicitly has an 'any' type.7031
7031Binding element 'request' implicitly has an 'any' type.
Binding element 'platform' implicitly has an 'any' type.constx =platform .env .YOUR_DURABLE_OBJECT_NAMESPACE .idFromName ('x');}
对于环境变量,应优先使用 SvelteKit 的内置
$env
模块。
要包含绑定类型的声明,请在 src/app.d.ts
中引用它们
declare global {
namespace App {
interface Platform {
env?: {
YOUR_KV_NAMESPACE: KVNamespace;
YOUR_DURABLE_OBJECT_NAMESPACE: DurableObjectNamespace;
};
}
}
}
export {};
本地测试永久链接
在开发和预览模式期间,platform
属性中的 Cloudflare Workers 特定值被模拟。基于 wrangler.toml
文件中的配置创建本地 绑定,并在开发和预览期间用于填充 platform.env
。使用适配器配置 platformProxy
选项 更改绑定偏好设置。
要测试构建,你应使用 wrangler 版本 3。构建网站后,运行 wrangler pages dev .svelte-kit/cloudflare
。
备注永久链接
项目根目录下的 /functions
目录中包含的函数不会包含在部署中,该部署编译为 单个 _worker.js
文件。函数应在 SvelteKit 应用中作为 服务器端点 实现。
特定于 Cloudflare Pages 的 _headers
和 _redirects
文件可用于静态资产响应(如图像),方法是将它们放入 /static
文件夹中。
但是,它们不会对 SvelteKit 动态呈现的响应产生任何影响,SvelteKit 应从 服务器端点 或使用 handle
钩子返回自定义标头或重定向响应。
故障排除永久链接
延伸阅读永久链接
你可能希望参考 Cloudflare 关于部署 SvelteKit 网站的文档。
访问文件系统永久链接
你无法在 Cloudflare Workers 中使用 fs
— 你必须 预渲染 有问题的路由。