@astrojs/ cloudflare
Un adaptateur SSR pour utiliser les fonctionnalités de Cloudflare Pages. Écrivez votre code en Astro/Javascript et déployez-le sur Cloudflare Pages.
Installation
Titre de la section InstallationAjoutez l’adaptateur Cloudflare pour activer le SSR dans votre projet Astro avec la commande astro add
. Cela installera l’adaptateur et apportera les changements appropriés à votre fichier astro.config.mjs
en une seule étape.
Si vous préférez installer l’adaptateur manuellement, suivez les deux étapes suivantes :
- Ajoutez l’adaptateur Cloudflare aux dépendances de votre projet à l’aide de votre gestionnaire de paquets préféré. Si vous utilisez npm ou si vous n’êtes pas sûr, exécutez ceci dans le terminal :
- Ajoutez ce qui suit à votre fichier
astro.config.mjs
:
Options
Titre de la section Optionsmode: "advanced" | "directory"
Par défaut "advanced"
Cette option de configuration définit comment votre projet Astro est déployé sur les pages Cloudflare.
- Le mode
advanced
récupère le fichier_worker.js
dans le dossierdist
. - Le mode
directory
récupère les fichiers dans le dossierfunctions
, par défaut un seul fichier[[path]].js
est généré.
Le passage en mode directory
vous permet d’ajouter manuellement des fichiers supplémentaires tels que
les Plugins Cloudflare Pages, Cloudflare Pages Middleware ou des fonctions personnalisées en utilisant Cloudflare Pages Functions Routing.
Pour compiler un bundle séparé pour chaque page, définissez l’option functionPerRoute
dans la configuration de votre adaptateur Cloudflare. Cette option nécessite une maintenance manuelle du dossier functions
. Les fichiers émis par Astro écraseront les fichiers existants avec des noms identiques dans le dossier functions
, vous devez donc choisir des noms de fichiers uniques pour chaque fichier que vous ajoutez manuellement. De plus, l’adaptateur ne videra jamais le dossier functions
des fichiers obsolètes, vous devez donc nettoyer le dossier manuellement lorsque vous supprimez des pages.
Cet adaptateur ne supporte pas l’option edgeMiddleware
.
routes.strategy
Titre de la section routes.strategyroutes.strategy: "auto" | "include" | "exclude"
Par défaut "auto"
Détermine comment routes.json
sera généré si aucun _routes.json
personnalisé n’est fourni.
Il y a trois options disponibles :
-
"auto"
(par défaut) : Sélectionne automatiquement la stratégie qui génère le moins d’entrées. Cela devrait presque toujours être suffisant, donc choisissez cette option à moins que vous n’ayez une raison spécifique de ne pas le faire. -
include
: Les pages et les points de terminaison (endpoints) qui ne sont pas pré-rendus sont listés en tant qu’entréesinclude
indiquant à Cloudflare d’invoquer ces routes en tant que fonctions. Les entréesexclude
ne sont utilisées que pour résoudre les conflits. C’est généralement la meilleure stratégie lorsque votre site web a principalement des pages statiques et seulement quelques pages dynamiques ou points de terminaison.Exemple : Pour
src/pages/index.astro
(statique),src/pages/company.astro
(statique),src/pages/users/faq.astro
(statique) et/src/pages/users/[id].astro
(SSR) cela produira les_routes.json
suivantes: -
exclude
: Les pages pré-rendues sont listées en tant qu’entréesexclude
(indiquant à Cloudflare de traiter ces routes comme des actifs statiques). C’est généralement la meilleure stratégie lorsque votre site web a principalement des pages dynamiques ou des points de terminaison et seulement quelques pages statiques.Exemple : Pour les mêmes pages que dans l’exemple précédent, cela produira le
_routes.json
suivant:
routes.include
Titre de la section routes.includeroutes.include: string[]
Par défaut []
Si vous voulez utiliser la génération automatique de _routes.json
, mais que vous voulez inclure des routes supplémentaires (par exemple, lorsque vous avez des fonctions personnalisées dans le dossier functions
), vous pouvez utiliser l’option routes.include
pour ajouter des routes supplémentaires au tableau include
.
routes.exclude
Titre de la section routes.excluderoutes.exclude: string[]
Par défaut []
Si vous voulez utiliser la génération automatique de _routes.json
, mais que vous voulez exclure des routes supplémentaires, vous pouvez utiliser l’option routes.exclude
pour ajouter des routes supplémentaires au tableau exclude
.
L’exemple suivant génère automatiquement _routes.json
en incluant et en excluant des routes supplémentaires. Notez que cela n’est nécessaire que si vous avez des fonctions personnalisées dans le dossier functions
qui ne sont pas gérées par Astro.
imageService
Titre de la section imageServiceimageService: "passthrough" | "cloudflare"
Détermine quel service d’image est utilisé par l’adaptateur. L’adaptateur utilisera par défaut le mode passthrough
si un service d’image incompatible est configuré. Sinon, il utilisera le service d’image configuré globalement :
cloudflare
: Utilise le service Cloudflare Image Resizing.passthrough
: Utilise le service existantnoop
.
wasmModuleImports
Titre de la section wasmModuleImportswasmModuleImports: boolean
Par défaut: false
Importer ou non les fichiers .wasm
directement en tant que modules ES.
Ajouter wasmModuleImports: true
à astro.config.mjs
pour l’activer à la fois dans la version Cloudflare et dans le serveur de développement Astro. En savoir plus sur l’utilisation des modules Wasm.
runtime
Titre de la section runtimeruntime: { mode: "off" | "local", persistTo: string }
Par défaut { mode: 'off', persistTo: '' }
Détermine si et comment le Cloudflare Runtime est ajouté à astro dev
.
Le moteur d’exécution Cloudflare comprend les liaisons Cloudflare, les variables d’environment, et l’objet cf. En savoir plus sur l’accès au moteur d’exécution Cloudflare.
La propriété mode
définit comment le moteur d’exécution est ajouté à astro dev
:
local
: utilise des bindings mocking et des placeholders statiques localement.off
: pas d’accès au runtime Cloudflare en utilisantastro dev
. Vous pouvez également utiliser Prévisualisation avec Wrangler
La propriété persistTo
définit l’endroit où le moteur d’exécution local est installé lors de l’utilisation de mode : local
. Cette valeur est un répertoire relatif à votre chemin d’exécution astro dev
.
La valeur par défaut est .wrangler/state/v3
pour correspondre au chemin par défaut utilisé par Wrangler. Cela signifie que les deux outils sont capables d’accéder et d’utiliser l’état local.
Quel que soit le répertoire défini dans persistTo
, .wrangler
ou votre valeur personnalisée, il doit être ajouté à .gitignore
.
Cloudflare runtime
Titre de la section Cloudflare runtimeVous donne accès aux variables d’environnement, et aux Cloudflare bindings.
Liaisons actuellement prises en charge :
Vous pouvez accéder au runtime à partir des composants Astro via Astro.locals
à l’intérieur de n’importe quel fichier .astro
.
Vous pouvez accéder au runtime à partir des endpoints de l’API par le biais de context.locals
:
Si vous avez configuré le mode : advanced
, vous pouvez typer l’objet runtime
en utilisant AdvancedRuntime
:
Si vous avez configuré le mode: directory
,vous pouvez typer l’objet runtime
en utilisant DirectoryRuntime
:
Plate-forme
Titre de la section Plate-formeEn-têtes
Titre de la section En-têtesVous pouvez attacher des en-têtes personnalisés à vos réponses en ajoutant un fichier _headers
dans le dossier public/
de votre projet Astro. Ce fichier sera copié dans le répertoire de sortie de la compilation.
Redirections
Titre de la section RedirectionsVous pouvez déclarer des redirections personnalisées en utilisant les pages Cloudflare. Cela vous permet de rediriger les requêtes vers une URL différente. Vous pouvez ajouter un fichier _redirects
dans le dossier public/
de votre projet Astro. Ce fichier sera copié dans le répertoire de sortie de votre build.
Vous pouvez définir quelles routes invoquent des fonctions et lesquelles sont des actifs statiques, en utilisant Cloudflare routing via un fichier _routes.json
. Ce fichier est automatiquement généré par Astro.
_routes.json
personnalisé
Titre de la section _routes.json personnaliséPar défaut, @astrojs/cloudflare
va générer un fichier _routes.json
avec des règles include
et exclude
basées sur les routes dynamiques et statiques de vos applications.
Cela permettra à Cloudflare de servir les fichiers et de traiter les redirections statiques sans invocation de fonction. La création d’un _routes.json
personnalisé annulera cette optimisation automatique. Voir la documentation de Cloudflare sur la création d’un routes.json
personnalisé pour plus de détails.
Utilisation des modules Wasm
Titre de la section Utilisation des modules WasmVoici un exemple d’importation d’un module Wasm qui répond aux requêtes en additionnant les paramètres numériques de la requête.
Bien que cet exemple soit trivial, Wasm peut être utilisé pour accélérer des opérations de calcul intensif qui n’impliquent pas d’E/S importantes, comme l’intégration d’une bibliothèque de traitement d’images.
Compatibilité Node.js
Titre de la section Compatibilité Node.jsL’adaptateur Cloudflare d’Astro vous permet d’utiliser n’importe quelle API d’exécution Node.js prise en charge par Cloudflare :
- assert
- AsyncLocalStorage
- Buffer
- Crypto
- Diagnostics Channel
- EventEmitter
- path
- process
- Streams
- StringDecoder
- util
Pour utiliser ces API, votre page ou votre point d’accès doit être rendu côté serveur (et non pré-rendu) et doit utiliser la syntaxe d’importation import {} from 'node:*'
.
En plus, vous devez activer l’option de compatibilité (Compatibility Flag) dans Cloudflare. La configuration de cette option peut varier en fonction de l’endroit où vous déployez votre site Astro. Pour des conseils détaillés, consulter la documentation Cloudflare (EN).
Support des modules Cloudflare
Titre de la section Support des modules CloudflareTous les paquets Cloudflare (par exemple cloudflare:sockets
) sont autorisés à être utilisés. Notez que le paquet cloudflare:sockets
ne fonctionne pas localement sans utiliser le mode dev de Wrangler.
Prévisualisation avec Wrangler
Titre de la section Prévisualisation avec WranglerPour utiliser wrangler
afin d’exécuter votre application localement, mettez à jour le script de prévisualisation :
wrangler
vous donne accès à Cloudflare bindings, environment variables, et à cf object. Faire fonctionner le rechargement à chaud ou le serveur astro dev avec Wrangler peut nécessiter une configuration personnalisée. Voir exemples de la communauté.
Messages d’erreur significatifs
Titre de la section Messages d’erreur significatifsActuellement, les erreurs lors de l’exécution de votre application dans Wrangler ne sont pas très utiles, en raison de la minification de votre code. Pour un meilleur débogage, vous pouvez ajouter le paramètre vite.build.minify = false
à votre astro.config.js
Dépannage
Titre de la section DépannagePour obtenir de l’aide, consultez le canal #support
sur Discord. Nos sympathiques membres de l’équipe d’assistance sont là pour vous aider !
Vous pouvez également consulter notre Documentation d’intégration Astro pour plus d’informations sur les intégrations.
Contribution
Titre de la section ContributionCe paquet est maintenu par l’équipe Astro’s Core. Vous êtes les bienvenus pour soumettre un problème ou une PR !