Compilation et déploiement
Cloudflare Workers
Éditer cette page sur GithubPour déployer sur Cloudflare Workers, utilisez adapter-cloudflare-workers
.
À moins d'avoir une raison précise d'utiliser
adapter-cloudflare-workers
, nous recommandons plutôt d'utiliseradapter-cloudflare
. Les deux adaptateurs sont équivalents, mais Cloudflare Pages vous offre des fonctionnalités comme l'intégration Github avec des builds et déploiements automatisés, des aperçus de déploiement, des retours en arrière instantanés, et d'autres choses.
Usagepermalink
Installez l'adaptateur avec npm i -D @sveltejs/adapter-cloudflare-workers
, puis ajoutez-le à votre fichier svelte.config.js
:
ts
importCannot find module '@sveltejs/adapter-cloudflare-workers' or its corresponding type declarations.2307Cannot find module '@sveltejs/adapter-cloudflare-workers' or its corresponding type declarations.adapter from'@sveltejs/adapter-cloudflare-workers' ;export default {kit : {adapter :adapter ()}};
Configuration de basepermalink
Cet adaptateur attend un fichier wrangler.toml à la racine de votre projet. Il doit avoir cette forme :
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"
workers_dev = true
<your-service-name>
peut être n'importe quoi. <your-account-id>
peut être récupéré en vous connectant à votre espace Cloudflare et en l'extrayant de la fin de l'URL :
https://dash.cloudflare.com/<your-account-id>
Vous devriez ajouter le dossier
.cloudflare
(ou tout dossier défini en tant quemain
etsite.bucket
) à votre fichier.gitignore
.
Vous aurez besoin d'installer wrangler et de vous y connecter, si vous ne l'avez pas déjà fait :
npm i -g wrangler
wrangler login
Puis, vous pouvez compiler votre application et la déployer :
wrangler deploy
Configuration personnaliséepermalink
Si vous souhaitez utiliser un fichier de configuration autre que wrangler.toml
, vous pouvez le faire ainsi :
ts
importCannot find module '@sveltejs/adapter-cloudflare-workers' or its corresponding type declarations.2307Cannot find module '@sveltejs/adapter-cloudflare-workers' or its corresponding type declarations.adapter from'@sveltejs/adapter-cloudflare-workers' ;export default {kit : {adapter :adapter ({config : '<your-wrangler-name>.toml' })}};
Si vous souhaitez activer la compatibilité Node.js (en anglais), vous pouvez ajouter l'attribut "nodejs_compat" au fichier wrangler.toml
:
compatibility_flags = [ "nodejs_compat" ]
Bindingspermalink
L'objet env
contient les bindings de votre projet, qui consistent en des namespaces KV/DO, etc. Il est fourni à SvelteKit via la propriété platform
, conjointement à context
et caches
, ce qui signifie que vous pouvez y accéder dans les hooks et les endpoints :
ts
export async functionBinding element 'request' implicitly has an 'any' type.Binding element 'platform' implicitly has an 'any' type.7031POST ({, request }) { platform
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');}
Vous devriez plutôt utiliser le module intégré de SvelteKit
$env
pour gérer vos variables d'environnement.
Pour rendre ces types accessibles dans votre application, référencez-les dans votre fichier src/app.d.ts
:
declare global {
namespace App {
interface Platform {
env?: {
YOUR_KV_NAMESPACE: KVNamespace;
YOUR_DURABLE_OBJECT_NAMESPACE: DurableObjectNamespace;
};
}
}
}
export {};
Tester localementpermalink
platform.env
est uniquement accessible dans le build final, et donc pas en mode développement. Pour tester le build, vous pouvez utiliser wrangler. Une fois que vous avez compilé votre site, lancez la commande wrangler pages dev .svelte-kit/cloudflare
. Assurez-vous d'avoir vos bindings dans votre fichier wrangler.toml
. La version 3 de Wrangler est recommandée.
Résolution de problèmespermalink
Limites de taille de Workerpermalink
Lorsque vous déployez sur des workers, le serveur généré par SvelteKit est compilé en un seul fichier. Wrangler échouera à publier votre worker s'il excède la limite de taille après minification. Vous ne devriez normalement pas dépasser cette limite, mais certaines grosses librairies peuvent vous faire rencontrer ce problème. Dans ce cas, essayez de réduire la taille de votre worker en important ce type de librairie uniquement côté client. Lire la FÀQ pour plus d'informations.
Accès au système de fichierspermalink
Vous ne pouvez pas utiliser fs
dans les workers Cloudflare - vous devez prérendre les routes en question.