Pour déployer sur Netlify, utilisez l'adaptateur [`adapter-netlify`](https://github.com/sveltejs/kit/tree/main/packages/adapter-netlify). Cet adaptateur sera installé par défaut si vous utilisez [`adapter-auto`](adapter-auto), mais l'ajouter à votre projet vous permet de spécifier des options spécifiques à Netlify. ## Usage Installez l'adaptateur avec `npm i -D @sveltejs/adapter-netlify`, puis ajoutez-le à votre fichier `svelte.config.js` : ```js // @errors: 2307 /// file: svelte.config.js import adapter from '@sveltejs/adapter-netlify'; export default { kit: { // les options par défaut sont affichées adapter: adapter({ // si vaut true, va créer une Netlify Edge Function plutôt // qu'utiliser des fonctions standards basées sur Node edge: false, // si vaut true, va découper votre application en différentes // fonctions plutôt que d'en créer une seule pour toute votre application. // si `edge` vaut true, cette option ne peut pas être utilisée split: false }) } }; ``` Ensuite, assurez-vous que vous avez un fichier [netlify.toml](https://docs.netlify.com/configure-builds/file-based-configuration) à la racine de votre projet. Celui-ci va déterminer l'endroit où créer des assets statiques en fonction des paramètres `build.publish`, comme montré dans cette configuration d'exemple : ```toml [build] command = "npm run build" publish = "build" ``` Si le fichier `netlify.toml` ou la valeur `build.publish` sont manquantes, une valeur par défaut de `"build"` sera utilisée. Notez que si vous avez défini le dossier de publication dans l'interface de Netlify comme étant un autre dossier, vous devrez le répliquer dans `netlify.toml` également, ou bien utiliser la valeur par défaut de `"build"`. ### Version de Node [!VO]Node version Les nouveaux projets utilisent la dernière version LTS de Node par défaut. Toutefois, si vous mettez à jour un projet que vous avez créé il y a un moment, celui-ci est peut-être bloqué sur une autre version. Référrez-vous à la [documentation de Netlify](https://docs.netlify.com/configure-builds/manage-dependencies/#node-js-and-javascript) pour obtenir des détails sur comment spécifier manuellement une version de Node. ## Netlify Edge Functions SvelteKit supporte les [Netlify Edge Functions](https://docs.netlify.com/netlify-labs/experimental-features/edge-functions/). Si vous passez l'option `edge: true` à la fonction `adapter`, le rendu côté serveur sera effectué dans une fonction edge basée sur Deno et déployée à proximité de l'emplacement de la personne visitant le site. Si l'option est définie à `false` (par défaut), le site sera déployé sur des Netlify Functions basées sur Node. ```js // @errors: 2307 /// file: svelte.config.js import adapter from '@sveltejs/adapter-netlify'; export default { kit: { adapter: adapter({ // va créer une Netlify Edge Function utilisant Deno // plutôt qu'utiliser des fonctions Node standards basées sur Node edge: true }) } }; ``` ## Alternatives Netlify à certaines fonctionnalités SvelteKit [!VO]Netlify alternatives to SvelteKit functionality Vous pouvez construire votre application en utilisant les fonctionnalités fournies directement par SvelteKit sans vous reposer sur des fonctionnalités Netlify. Utiliser les versions SvelteKit de ces fonctionnalités vous permet de les utiliser lors du développement, de les tester avec des tests d'intégration, et d'utiliser d'autres adaptateurs si vous décidez de vous passer de Netlify. Cependant, dans certains scénarios vous pourriez trouver un bénéfice d'utiliser les versions Netlify de ces fonctionnalités. Par exemple, si vous migrez une application qui était déjà hébergée sur Netlify vers SvelteKit. ### `_headers` et `_redirects` [!VO]_headers` and `_redirects` Les fichiers [`_headers`](https://docs.netlify.com/routing/headers/#syntax-for-the-headers-file) et [`_redirects`](https://docs.netlify.com/routing/redirects/redirect-options/) spécifiques à Netlify peuvent être utilisés comme réponses d'assets statiques (comme les images) en les plaçant à la racine de votre projet. ### Règles de redirection [!VO]Redirect rules Lors de la compilation, les règles de redirection sont automatiquement ajoutées à votre fichier `_redirects`. (S'il n'existe pas encore, il sera créé.) Cela signifie que : - `[[redirects]]` dans `netlify.toml` ne va jamais correspondre puisque `_redirects` a une [plus grande priorité](https://docs.netlify.com/routing/redirects/#rule-processing-order) - `_redirects` ne devrait pas avoir de règles "attrape-tout" personnalisées comme `/* /foobar/:splat`. Autrement, la règle automatiquement ajoutée ne sera jamais appliquée puisque Netlify ne traite que [la première règle qui correspond](https://docs.netlify.com/routing/redirects/#rule-processing-order). ### Netlify Forms 1. Créez votre formulaire HTML Netlify comme décrit [ici](https://docs.netlify.com/forms/setup/#html-forms), par ex. comme `/routes/contact/+page.svelte`. (N'oubliez pas d'ajouter l'élément `` caché `form-name` !) 2. Le robot de compilation de Netlify va parser vos fichiers HTML au moment de la compilation, ce qui signifie que votre formulaire doit être [pré-rendu](page-options#prerender) en tant que HTML. Vous pouvez soit ajouter `export const prerender = true` à votre fichier `contact/+page.svelte` pour pré-rendre uniquement cette page, ou bien définir l'option `kit.prerender.force: true` pour pré-rendre toutes vos pages. 3. Si votre formulaire Netlify a un [message de succès personnalisé](https://docs.netlify.com/forms/setup/#success-messages) comme `
`, assurez-vous alors que le fichier `/routes/success/+page.svelte` existe et est pré-rendu. ### Netlify Functions Avec cet adaptateur, les endpoints SvelteKit sont hébergés en tant que [Netlify Functions](https://docs.netlify.com/functions/overview/). Les gestionnaires de fonction Netlify ont du contexte additionnel, incluant les informations de [Netlify Identity](https://docs.netlify.com/visitor-access/identity/). Vous pouvez accéder à ce contexte via le champ `event.platform.context` au sein de vos hooks et des fonctions `load` de vos fichiers `+page.server` ou `+layout.server`. Ces sont des [fonctions serverless](https://docs.netlify.com/functions/overview/) lorsque la propriété `edge` vaut `false` dans la configuration de l'adaptateur ou des [fonctions edge](https://docs.netlify.com/edge-functions/overview/#app) lorsqu'elle vaut `true`. ```js // @errors: 2705 7006 /// file: +page.server.js export const load = async (event) => { const context = event.platform.context; console.log(context); // s'affiche dans les logs de vos fonctions dans l'application Netlify }; ``` De plus, vous pouvez ajouter vos propres fonctions Netlify en créant un dossier dédié et en y ajoutant la configuration à votre fichier `netlify.toml`. Par exemple : ```toml [build] command = "npm run build" publish = "build" [functions] directory = "functions" ``` ## Résolution de problèmes [!VO]Troubleshooting ### Accéder au système de fichiers [!VO]Accessing the file system Vous ne pouvez pas utiliser `fs` dans les déploiements edge. Vous _pouvez_ vous servir de ce module lors des déploiements serverless, mais il ne fonctionnera probablement pas comme prévu, puisque les fichiers ne sont pas copiés depuis votre projet vers votre déploiement. Utilisez plutôt la fonction [`read`]($app-server#read) importée depuis `$app/server` pour accéder à vos fichiers. `read` ne fonctionne pas au sein des déploiements edge (cela pourra changer dans le futur). Comme alternative, vous pouvez [pré-rendre](page-options#prerender) les routes en question.