Cloudflare Workers
L’adaptateur
adapter-cloudflare-workers
a été déprécié en faveur deadapter-cloudflare
. Nous recommandons d’utiliseradapter-cloudflare
pour déployer sur les Cloudflare Workers avec Static Assets puisque les Cloudflare Workers Sites vont être dépréciés en sa faveur.
Pour déployer sur les Cloudflare Workers avec Workers
Sites, utilisez l’adaptateur
adapter-cloudflare-workers
.
Usage
Installez l’adaptateur avec npm i -D @sveltejs/adapter-cloudflare-workers
, puis ajoutez-le à votre
fichier svelte.config.js
:
import import adapter
adapter from '@sveltejs/adapter-cloudflare-workers';
export default {
kit: {
adapter: any;
}
kit: {
adapter: any
adapter: import adapter
adapter({
// voir plus bas pour les options que vous pouvez définir ici
})
}
};
Options
config
Chemin vers votre fichier de configuration
Wrangler. Si vous souhaitez
utiliser un nom de fichier de configuration Wrangler autre que wrangler.jsonc
, wrangler.json
, ou
wrangler.toml
, vous pouvez le préciser en utilisant cette option.
platformProxy
Les préférences pour les liaisons locales émulées platform.env
. Voir la documentation d’API de
Wrangler qui traite de
getPlatformProxy
pour plus
de détails.
Configuration de base
Cet adaptateur s’attend à trouver un fichier de configuration Wrangler à la racine du projet. Il devrait ressembler à quelque chose comme ça :
{
"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>
peut être n’importe quoi. <your-account-id>
peut être déterminé en exécutant
wrangler whoami
avec le CLI de Wrangler ou en vous connectant à votre espace
Cloudflare et en le récupérant à la fin de l’URL :
https://dash.cloudflare.com/<your-account-id>/home
Vous devriez ajouter les dossiers
.cloudflare
(ou tout dossier que vous auriez précisé en tant quemain
etsite.bucket
) et.wrangler
à votre fichier.gitignore
.
Vous aurez besoin d’installer Wrangler et de vous y connecter, si vous l’avez pas déjà fait :
npm i -D wrangler
wrangler login
Vous pourrez ensuite compiler votre application et la déployer :
wrangler deploy
APIs de runtime
L’objet env
contient les liaisons de votre
projet, qui consistent en des namespaces KV/DO, etc. Il est passé à SvelteKit via la propriété
platform
, de même que
context
,
caches
, et
cf
,
ce qui signifie que vous pouvez y accéder dans les hooks et les endpoints :
export async function function POST({ request, platform }: {
request: any;
platform: any;
}): Promise<void>
POST({ request, platform }) {
const const x: any
x = platform: any
platform.env.YOUR_DURABLE_OBJECT_NAMESPACE.idFromName('x');
}
Le module intégré de
$env
devrait être préféré pour les variables d’environnement.
Pour rendre ces types disponibles dans votre application, installez
@cloudflare/workers-types
et
référencez-les dans votre fichier src/app.d.ts
:
import { interface KVNamespace<Key extends string = string>
KVNamespace, interface DurableObjectNamespace<T extends Rpc.DurableObjectBranded | undefined = undefined>
DurableObjectNamespace } from '@cloudflare/workers-types';
declare global {
namespace App {
interface interface App.Platform
If your adapter provides platform-specific context via event.platform
, you can specify it here.
Platform {
App.Platform.env?: {
YOUR_KV_NAMESPACE: KVNamespace;
YOUR_DURABLE_OBJECT_NAMESPACE: DurableObjectNamespace;
} | undefined
env?: {
type YOUR_KV_NAMESPACE: KVNamespace<string>
YOUR_KV_NAMESPACE: interface KVNamespace<Key extends string = string>
KVNamespace;
type YOUR_DURABLE_OBJECT_NAMESPACE: DurableObjectNamespace<undefined>
YOUR_DURABLE_OBJECT_NAMESPACE: interface DurableObjectNamespace<T extends Rpc.DurableObjectBranded | undefined = undefined>
DurableObjectNamespace;
};
}
}
}
export {};Tester en local
Les valeurs spécifiques à Cloudflare dans la propriété platform
sont émulées lors du développement
et de la prévisualisation. Les
liaisons locales sont
créées en fonction de votre fichier de configuration
Wrangler et sont utilisées pour remplir
platform.env
lors du développement et de la prévisualisation. Utilisez la configuration
platformProxy
de
l’adaptateur pour changer vos préférences de liaison.
Pour tester le projet compilé, vous devriez utiliser la version 4 de
Wrangler. Une fois que vous avez compilé
votre site, lancez wrangler dev
.
Résolution de problèmes
Compatibilité avec Node.js
Si vous souhaitez activer la compatibilité avec
Node.js, vous pouvez ajouter
l’option de compatibilité nodejs_compat
à votre fichier de configuration :
{
"compatibility_flags": ["nodejs_compat"]
}
Limites de taille des workers
Lorsque vous déployez votre application, le serveur généré par SvelteKit est compilé en un seul fichier. Wrangler va échouer à publier votre worker s’il excède les limites de taille après minification. Il est normalement peu probable que vous dépassiez cette limite, mais certaines grosses librairies peuvent vous les faire dépasser. Dans ce cas, vous pouvez essayer de réduire la taille de votre worker en n’important ces librairies que côté client. Voir la FÀQ pour plus d’informations.
Accéder au système de fichiers
Vous ne pouvez pas utiliser fs
dans les Cloudflare Workers — vous devez
pré-rendre les routes en question.
Modifier cette page sur Github llms.txt