Cloudflare Workers
Для развёртывания на Cloudflare Workers с Workers Sites используйте adapter-cloudflare-workers.
Использование
Заголовок раздела «Использование»Установите с помощью команды npm i -D @sveltejs/adapter-cloudflare-workers, затем добавьте адаптер в ваш файл svelte.config.js:
import adapter from '@sveltejs/adapter-cloudflare-workers';
export default { kit: { adapter: adapter({ // см. описание доступных параметров ниже }) }};Путь к вашему конфигурационному файлу Wrangler. Если вы хотите использовать имя файла конфигурации Wrangler, отличное от wrangler.jsonc, wrangler.json или wrangler.toml, вы можете указать его с помощью этой опции.
platformProxy
Заголовок раздела «platformProxy»Настройки для эмулируемых локальных привязок platform.env. Полный список опций см. в документации по API getPlatformProxy Wrangler.
Базовая конфигурация
Заголовок раздела «Базовая конфигурация»Этот адаптер ожидает наличия конфигурационного файла Wrangler в корне проекта. Он должен выглядеть примерно так:
{ "name": "<your-service-name>", "account_id": "<your-account-id>", "main": "./.cloudflare/worker.js", "site": { "bucket": "./.cloudflare/public" }, "build": { "command": "npm run build" }, "compatibility_date": "2021-11-12"}<your-service-name> может быть любым. <your-account-id> можно найти, выполнив команду wrangler whoami с помощью инструмента Wrangler CLI или войдя в вашу панель управления Cloudflare и взяв его из конца URL:
https://dash.cloudflare.com/<your-account-id>/homeВам нужно установить Wrangler и войти в систему, если вы ещё этого не сделали:
npm i -D wranglerwrangler loginЗатем вы можете собрать и развернуть свое приложение:
wrangler deployAPI среды выполнения
Заголовок раздела «API среды выполнения»Объект env содержит привязки вашего проекта, такие как пространства имён KV/DO и т. д. Он передаётся в SvelteKit через свойство platform вместе с ctx, caches и cf, что позволяет вам получать к нему доступ в хуках и эндпойнтах:
export async function POST({ request, platform }) { const x = platform.env.YOUR_DURABLE_OBJECT_NAMESPACE.idFromName('x');}Чтобы сделать эти типы доступными для вашего приложения, установите @cloudflare/workers-types и укажите их в вашем файле src/app.d.ts:
import { KVNamespace, DurableObjectNamespace } from '@cloudflare/workers-types';
declare global { namespace App { interface Platform { env?: { YOUR_KV_NAMESPACE: KVNamespace; YOUR_DURABLE_OBJECT_NAMESPACE: DurableObjectNamespace; }; } }}
export {};Локальное тестирование
Заголовок раздела «Локальное тестирование»Значения, специфичные для Cloudflare Workers, в свойстве platform эмулируются в режимах разработки и предпросмотра. Локальные привязки создаются на основе вашего конфигурационного файла Wrangler и используются для заполнения platform.env во время разработки и предпросмотра. Используйте опцию конфигурации адаптера platformProxy, чтобы изменить настройки для привязок.
Для тестирования сборки используйте Wrangler версии 4. После сборки сайта выполните команду wrangler dev.
Решение проблем
Заголовок раздела «Решение проблем»Совместимость с Node.js
Заголовок раздела «Совместимость с Node.js»Если вы хотите включить совместимость с Node.js, добавьте флаг совместимости nodejs_compat в ваш конфигурационный файл Wrangler:
{ "compatibility_flags": ["nodejs_compat"]}Ограничения размера воркера
Заголовок раздела «Ограничения размера воркера»При развёртывании вашего приложения сервер, созданный SvelteKit, собирается в один файл. Wrangler не сможет опубликовать ваш воркер, если после минификации он превысит ограничения по размеру. Обычно вы вряд ли столкнётесь с этим ограничением, но некоторые крупные библиотеки могут его вызвать. В таком случае попробуйте уменьшить размер воркера, импортируя такие библиотеки только на стороне клиента. Подробности см. в FAQ.
Доступ к файловой системе
Заголовок раздела «Доступ к файловой системе»В Cloudflare Workers нельзя использовать fs — необходимо предварительно рендерить соответствующие маршруты.