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](https://github.com/sveltejs/kit/tree/main/packages) 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` : ```js // @errors: 2322 // @filename: ambient.d.ts type AdapterSpecificOptions = any; // @filename: index.js // ---cut--- /** @param {AdapterSpecificOptions} options */ export default function (options) { /** @type {import('@sveltejs/kit').Adapter} */ const adapter = { name: 'adapter-package-name', async adapt(builder) { // implémentation de l'adaptateur }, async emulate() { return { async platform({ config, 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` } } }, supports: { read: ({ config, 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 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`](https://developer.mozilla.org/en-US/docs/Web/API/Request) standards si besoin, appelle la fonction `server.respond(request, { getClientAddress })` pour générer une réponse [`Response`](https://developer.mozilla.org/en-US/docs/Web/API/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]`.