> [!NOTE] L'adaptateur `adapter-cloudflare-workers` a été déprécié en faveur de > [`adapter-cloudflare`](adapter-cloudflare). Nous recommandons d'utiliser `adapter-cloudflare` pour > déployer sur les Cloudflare Workers avec [Static > Assets](https://developers.cloudflare.com/workers/static-assets/) puisque les Cloudflare Workers > Sites vont être dépréciés en sa faveur. Pour déployer sur les [Cloudflare Workers](https://workers.cloudflare.com/) avec [Workers Sites](https://developers.cloudflare.com/workers/configuration/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` : ```js // @errors: 2307 /// file: svelte.config.js import adapter from '@sveltejs/adapter-cloudflare-workers'; export default { kit: { adapter: adapter({ // voir plus bas pour les options que vous pouvez définir ici }) } }; ``` ## Options ### config Chemin vers votre [fichier de configuration Wrangler](https://developers.cloudflare.com/workers/wrangler/configuration/). 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`](https://developers.cloudflare.com/workers/wrangler/api/#parameters-1) pour plus de détails. ## Configuration de base [!VO]Basic Configuration Cet adaptateur s'attend à trouver un [fichier de configuration Wrangler](https://developers.cloudflare.com/workers/configuration/sites/configuration/) à la racine du projet. Il devrait ressembler à quelque chose comme ça : ```jsonc /// file: wrangler.jsonc { "name": "", "account_id": "", "main": "./.cloudflare/worker.js", "site": { "bucket": "./.cloudflare/public" }, "build": { "command": "npm run build" }, "compatibility_date": "2021-11-12" } ``` `` peut être n'importe quoi. `` peut être déterminé en exécutant `wrangler whoami` avec le CLI de Wrangler ou en vous connectant à votre [espace Cloudflare](https://dash.cloudflare.com) et en le récupérant à la fin de l'URL : ``` https://dash.cloudflare.com//home ``` > [!NOTE] Vous devriez ajouter les dossiers `.cloudflare` (ou tout dossier que vous auriez précisé > en tant que `main` et `site.bucket`) et `.wrangler` à votre fichier `.gitignore`. Vous aurez besoin d'installer [Wrangler](https://developers.cloudflare.com/workers/wrangler/install-and-update/) et de vous y connecter, si vous l'avez pas déjà fait : ```sh npm i -D wrangler wrangler login ``` Vous pourrez ensuite compiler votre application et la déployer : ```sh wrangler deploy ``` ## APIs de runtime [!VO]Runtime APIs L'objet [`env`](https://developers.cloudflare.com/workers/runtime-apis/fetch-event#parameters) contient les [liaisons](https://developers.cloudflare.com/workers/runtime-apis/bindings/) 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`](https://developers.cloudflare.com/workers/runtime-apis/context/), [`caches`](https://developers.cloudflare.com/workers/runtime-apis/cache/), et [`cf`](https://developers.cloudflare.com/workers/runtime-apis/request/#incomingrequestcfproperties), ce qui signifie que vous pouvez y accéder dans les hooks et les endpoints : ```js // @errors: 7031 export async function POST({ request, platform }) { const x = platform.env.YOUR_DURABLE_OBJECT_NAMESPACE.idFromName('x'); } ``` > [!NOTE] Le module intégré de [`$env`]($env-static-private) devrait être préféré pour les variables > d'environnement. Pour rendre ces types disponibles dans votre application, installez [`@cloudflare/workers-types`](https://www.npmjs.com/package/@cloudflare/workers-types) et référencez-les dans votre fichier `src/app.d.ts` : ```ts /// file: 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 {}; ``` ### Tester en local [!VO]Testing locally Les valeurs spécifiques à Cloudflare dans la propriété `platform` sont émulées lors du développement et de la prévisualisation. Les [liaisons](https://developers.cloudflare.com/workers/wrangler/configuration/#bindings) locales sont créées en fonction de votre [fichier de configuration Wrangler](https://developers.cloudflare.com/workers/wrangler/) et sont utilisées pour remplir `platform.env` lors du développement et de la prévisualisation. Utilisez la configuration [`platformProxy`](#Options-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](https://developers.cloudflare.com/workers/wrangler/). Une fois que vous avez compilé votre site, lancez `wrangler dev`. ## Résolution de problèmes [!VO]Troubleshooting ### Compatibilité avec Node.js [!VO]Node.js compatibility Si vous souhaitez activer la [compatibilité avec Node.js](https://developers.cloudflare.com/workers/runtime-apis/nodejs/), vous pouvez ajouter l'option de compatibilité `nodejs_compat` à votre fichier de configuration : ```jsonc /// file: wrangler.jsonc { "compatibility_flags": ["nodejs_compat"] } ``` ### Limites de taille des workers [!VO]Worker size limits 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](https://developers.cloudflare.com/workers/platform/limits/#worker-size) 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](./faq#How-do-I-use-a-client-side-library-accessing-document-or-window) pour plus d'informations. ### Accéder au système de fichiers [!VO]Accessing the file system Vous ne pouvez pas utiliser `fs` dans les Cloudflare Workers — vous devez [pré-rendre](page-options#prerender) les routes en question.