Compilation et déploiement
Écrire son adaptateur
Éditer cette page sur GithubSi un adaptateur pour votre environnement préféré n'existe pas encore, vous pouvez en écrire un. Nous vous recommandons de vous inspirer du code source de l'adaptateur d'une plateforme similaire à la vôtre, et de le dupliquer pour avoir un point de départ.
Les adaptateurs doivent implémenter l'API suivante, qui crée un Adapter
:
ts
/** @param {AdapterSpecificOptions} options */export default function (options ) {/** @type {import('@sveltejs/kit').Adapter} */constadapter = {name : 'adapter-package-name',asyncadapt (builder ) {// implémentation de l'adaptateur},asyncemulate () {return {asyncType '({ config, route }: { config: any; route: { id: string; }; }) => void' is not assignable to type '(details: { config: any; route: { id: string; }; }) => boolean'. Type 'void' is not assignable to type 'boolean'.2322Type '({ config, route }: { config: any; route: { id: string; }; }) => void' is not assignable to type '(details: { config: any; route: { id: string; }; }) => boolean'. Type 'void' is not assignable to type 'boolean'.platform ({config ,prerender }) {// the returned object becomes `event.platform` during dev, build and// preview. Its shape is that of `App.Platform`}}},supports : {read : ({config ,route }) => {// Retourne `true` si la route avec la `config` donnée peut utiliser `read`// de `$app/server` en production, retourner `false` si ce n'est pas le cas.// Ou bien une erreur est levée décrivant comment configurer le déploiement.}}};returnadapter ;}
Parmi ceux-ci, name
et adapt
sont obligatoires. emulate
et supports
sont optionnels.
Au sein de la méthode adapt
, il y a un certain nombre de choses qu'un adaptateur doit faire :
- Vider le contenu du dossier de build
- Écrire le contenu SvelteKit généré avec
builder.writeClient
,builder.writeServer
, etbuilder.writePrerendered
- Générer le code qui :
- importe
Server
depuis${builder.getServerDirectory()}/index.js
- instancie l'application avec un manifeste généré avec
builder.generateManifest({ relativePath })
- écoute les requêtes vers la plateforme, les convertit en objets standards Request si nécessaire, appelle la fonction
server.respond(request, { getClientAddress })
pour générer un objet Response et répond avec cet objet - expose à SvelteKit toute information spécifique à la plateforme via l'option
platform
passée àserver.respond
- rend
fetch
utilisable sur la plateforme cible, si nécessaire. SvelteKit fournit un utilitaire@sveltejs/kit/node/polyfills
pour les plateformes qui peuvent utiliserundici
- importe
- Préparer le code pour éviter d'avoir à installer les dépendances sur la plateforme cible, si nécessaire
- Place les fichiers statiques de l'utilisateur ou l'utilisatrice ainsi que les fichiers JS/CSS à l'endroit prévu par la plateforme cible
Lorsque c'est possible, nous recommandons de placer le code généré par l'adaptateur dans le dossier build/
avec tout code généré temporairement placé dans .svelte-kit/[adapter-name]
.
précédent Vercel
suivant Routing avancé