Compilation et déploiement
Génération de site statique
Éditer cette page sur GithubPour utiliser SvelteKit comme un générateur de site statique (SSG), utilisez adapter-static
.
Ceci va prérendre l'intégralité de votre site comme un collection de fichiers statiques. Si vous préférez prérendre uniquement certaines pages et rendre dynamiquement les autres sur votre serveur, vous aurez besoin d'un adaptateur différent et d'utiliser l'option de page prerender
.
Usagepermalink
Installez l'adaptateur avec npm i -D @sveltejs/adapter-static
, puis ajoutez-le à votre fichier svelte.config.js
:
ts
importCannot find module '@sveltejs/adapter-static' or its corresponding type declarations.2307Cannot find module '@sveltejs/adapter-static' or its corresponding type declarations.adapter from'@sveltejs/adapter-static' ;export default {kit : {adapter :adapter ({// voici les valeurs d'options par défaut.// Sur certaines plateformes, ces options// seront définies automatiquement – voir plus baspages : 'build',assets : 'build',fallback :undefined ,precompress : false,strict : true})}};
...et ajoutez l'option prerender
à votre layout racine :
ts
// Cette valeur peut être `false` si vous utilisez le mode SPAexport constprerender = true;
ts
// Cette valeur peut être `false` si vous utilisez le mode SPAexport constprerender = true;
Vous devez vous assurer que l'option de SvelteKit
trailingSlash
est correctement définie pour votre environnement. Si votre hôte ne renvoie pas/a.html
pour une requête demandant/a
, vous aurez alors besoin de définirtrailingSlash: 'always'
dans votre layout racine pour renvoyer à la place/a/index.html
.
Support sans configurationpermalink
Certaines plateformes n'ont pas besoin de configuration (d'autres sont à venir) :
Sur ces plateformes, vous devriez ignorer les options d'adaptateur pour que adapter-static
soit configuré de manière optimale :
export default {
kit: {
adapter: adapter({...})
adapter: adapter()
}
};
Optionspermalink
pagespermalink
Le dossier dans lequel écrire les pages prérendues. Il s'agit de build
par défaut.
assetspermalink
Le dossier dans lequel écrire les fichiers statiques (le contenu du dossier static
, plus les fichiers JS et CSS client générés par SvelteKit). Ce dossier doit normalement être le même que pages
, et sera par défaut le même que celui défini par l'option pages
, mais dans de rares circonstances vous pourriez avoir besoin de placer vos pages générées et vos fichiers statiques dans des dossiers différents.
fallbackpermalink
Définit une page par défaut pour le mode SPA, par ex. index.html
, 200.html
ou 400.html
.
precompresspermalink
Si true
, précompresse les fichiers avec brotli et gzip. Ceci va générer des fichiers .br
et .gz
.
strictpermalink
Par défaut, adapter-static
vérifie soit que toutes les pages et endpoints de votre application sont prérendues, ou que vous avez l'option fallback
activée. Cela vous permet d'éviter accidentellement de publier une application où certaines parties ne sont pas accessibles, car elles n'ont pas été générées. Si vous savez que tout va bien (par exemple lorsqu'une certaine page n'existe que sous certaines conditions), vous pouvez définir l'option strict
à false
pour désactiver cette vérification.
GitHub Pagespermalink
Lorsque vous compilez pour Github Pages, si le nom de votre projet n'est pas équivalent à votre-nom.github.io
, assurez-vous de mettre à jour config.kit.paths.base
pour qu'il corresponde au nom de votre projet Github. Ceci est nécessaire puisque le site sera servi depuis https://votre-nom.github.io/votre-nom-de-projet plutôt que depuis la racine.
Il est également utile de générer un page 404.html
de repli pour remplacer la page 404 par défaut qui utilisée par Github Pages.
Une configuration pour Github Pages peut ressembler à ceci :
ts
importCannot find module '@sveltejs/adapter-static' or its corresponding type declarations.2307Cannot find module '@sveltejs/adapter-static' or its corresponding type declarations.adapter from'@sveltejs/adapter-static' ;/** @type {import('@sveltejs/kit').Config} */constconfig = {kit : {adapter :adapter ({fallback : '404.html'}),paths : {Type 'string | undefined' is not assignable to type '"" | `/${string}` | undefined'. Type 'string' is not assignable to type '"" | `/${string}` | undefined'.2322Type 'string | undefined' is not assignable to type '"" | `/${string}` | undefined'. Type 'string' is not assignable to type '"" | `/${string}` | undefined'.: base process .argv .includes ('dev') ? '' :process .env .BASE_PATH }}};export defaultconfig ;
Vous pouvez utiliser les Github Actions pour déployer automatiquement votre site sur Github Pages lorsque vous faites un changement. Voici un exemple de workflow :
yaml
name: Deploy to GitHub Pageson:push:branches: 'main'jobs:build_site:runs-on: ubuntu-lateststeps:- name: Checkoutuses: actions/checkout@v4# Si vous utilisez pnpm, ajoutez cette étape puis modifiez les commandes la clé de cache# ci-dessous pour utiliser `pnpm`# - name: Install pnpm# uses: pnpm/action-setup@v3# with:# version: 8- name: Install Node.jsuses: actions/setup-node@v4with:node-version: 20cache: npm- name: Install dependenciesrun: npm install- name: buildenv:BASE_PATH: '/${{ github.event.repository.name }}'run: |npm run build- name: Upload Artifactsuses: actions/upload-pages-artifact@v3with:# ceci devrait correspondre à l'option `pages` de votre adaptateurpath: 'build/'deploy:needs: build_siteruns-on: ubuntu-latestpermissions:pages: writeid-token: writeenvironment:name: github-pagesurl: ${{ steps.deployment.outputs.page_url }}steps:- name: Deployid: deploymentuses: actions/deploy-pages@v4
Si vous n'utilisez pas les Github Actions pour déployer votre site (par exemple, vous publiez le site compilé sur son propre repository), ajoutez un fichier .nojekyll
dans votre dossier static
pour empêcher Jekyll d'interférer.