Skip to main content

Écrire un adaptateur

Si aucun adaptateur n’existe pour votre environnement favori, vous pouvez écrire le vôtre. Nous vous recommandons de regarder le code source d’un adaptateur pour une plateforme ressemblant à la vôtre et de vous en servir en tant que point de départ.

Les paquets d’adaptateur implémentent l’API suivante, qui crée un objet Adapter :

/** @param {AdapterSpecificOptions} options */
export default function (options: any
@paramoptions
options
) {
/** @type {import('@sveltejs/kit').Adapter} */ const const adapter: Adapter
@type{import('@sveltejs/kit').Adapter}
adapter
= {
Adapter.name: string

The name of the adapter, using for logging. Will typically correspond to the package name.

name
: 'adapter-package-name',
async Adapter.adapt: (builder: Builder) => MaybePromise<void>

This function is called after SvelteKit has built your app.

@parambuilder An object provided by SvelteKit that contains methods for adapting the app
adapt
(builder: Builderbuilder) {
// implémentation de l'adaptateur }, async Adapter.emulate?: (() => MaybePromise<Emulator>) | undefined

Creates an Emulator, which allows the adapter to influence the environment during dev, build and prerendering

emulate
() {
return { async
Emulator.platform?(details: {
    config: any;
    prerender: PrerenderOption;
}): MaybePromise<App.Platform>

A function that is called with the current route config and prerender option and returns an App.Platform object

platform
({ config: anyconfig, prerender: PrerenderOptionprerender }) {
// l'objet renvoyé devient `event.platform` lors du développement, de // la compilation et de la prévisualisation. Sa forme est celle de `App.Platform` } } },
Adapter.supports?: {
    read?: (details: {
        config: any;
        route: {
            id: string;
        };
    }) => boolean;
} | undefined

Checks called during dev and build to determine whether specific features will work in production with this adapter

supports
: {
read: ({ config: anyconfig,
route: {
    id: string;
}
route
}) => {
// Renvoyez `true` si la route avec la `config` donnée peut utiliser `read` // (importé depuis `$app/server`) en production, ou renvoyez `false` si elle ne peut pas. // Vous pouvez aussi jeter une erreur décrivant comment configurer le déploiement } } }; return const adapter: Adapter
@type{import('@sveltejs/kit').Adapter}
adapter
;
}

De ces options, uniquement name et adapt sont requises. emulate et supports sont optionnelles.

L’adaptateur est censé faire un certain nombre de choses au sein de la méthode adapt :

  • Supprimer le dossier de compilation
  • Écrire l’output de SvelteKit avec builder.writeClient, builder.writeServer et builder.writePrerendered
  • Générer du 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 venant de la plateforme, les convertit en objets Request standards si besoin, appelle la fonction server.respond(request, { getClientAddress }) pour générer une réponse Response et répond à la requête avec cette réponse
    • expose à SvelteKit toute information spécifique à la plateforme via l’option platform passée à server.respond
    • remplace globalement la méthode fetch pour qu’elle puisse fonctionner sur la plateforme ciblée, si nécessaire. SvelteKit fournit un utilitaire @sveltejs/kit/node/polyfills pour les plateformes qui peuvent utiliser undici
  • Compile l’output pour éviter d’avoir à installer les dépendances sur la plateforme cible, si nécessaire
  • Place les fichiers statiques et les fichiers JS/CSS générés dans l’emplacement prévu par la plateforme cible

Lorsque cela est possible, nous recommandons de placer les fichiers générés par l’adaptateur dans le dossier build/ avec tout output intermédiaire placé dans le dossier .svelte-kit/[adapter-name].

Modifier cette page sur Github llms.txt

précédent suivant