É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
options) {
/** @type {import('@sveltejs/kit').Adapter} */
const const adapter: 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.
adapt(builder: Builder
builder) {
// 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: any
config, prerender: PrerenderOption
prerender }) {
// 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: any
config, 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
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
etbuilder.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 fonctionserver.respond(request, { getClientAddress })
pour générer une réponseResponse
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 utiliserundici
- Importe
- 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