Skip to main content

Configuration

La configuration de votre projet est définie dans un fichier svelte.config.js à la racine de votre projet. Comme c’est le cas pour SvelteKit, cet objet de configuration est utilisé par d’autres outillages s’intégrant avec Svelte comme les extensions d’éditeur.

svelte.config
import const adapter: () => import("@sveltejs/kit").Adapteradapter from '@sveltejs/adapter-auto';

/** @type {import('@sveltejs/kit').Config} */
const const config: Config
@type{import('@sveltejs/kit').Config}
config
= {
Config.kit?: KitConfig | undefined

SvelteKit options

kit
: {
KitConfig.adapter?: Adapter | undefined

Your adapter is run when executing vite build. It determines how the output is converted for different platforms.

@defaultundefined
adapter
: function adapter(): import("@sveltejs/kit").Adapteradapter()
} }; export default const config: Config
@type{import('@sveltejs/kit').Config}
config
;

Config

Une extension des options de vite-plugin-svelte.

interface Config extends SvelteConfig {}
kit?: KitConfig;

Les options de SvelteKit.

[key: string]: any;

Toute option additionnelle requise par de l’outillage s’intégrant avec Svelte.

KitConfig

La propriété kit configure SvelteKit, et peut avoir les propriétés suivantes :

adapter

  • par défaut undefined

Votre adaptateur est exécuté lorsque vous lancez vite build. Il détermine comment la sortie de compilation est convertie pour les différentes plateformes.

alias

  • par défaut {}

Un objet contenant zéro alias ou plus utilisés pour remplacer les valeurs dans les déclarations d’import. Ces alias sont automatiquement passés à Vite et TypeScript.

svelte.config
/** @type {import('@sveltejs/kit').Config} */
const 
const config: {
    kit: {
        alias: {
 'my-file': string;
 'my-directory': string;
            'my-directory/*': string;
        };
    };
}
@type{import('@sveltejs/kit').Config}
config
= {
kit: {
    alias: {
        'my-file': string;
        'my-directory': string;
        'my-directory/*': string;
    };
}
kit
: {
alias: {
    'my-file': string;
    'my-directory': string;
    'my-directory/*': string;
}
alias
: {
// ceci va matcher un fichier 'my-file': 'path/to/my-file.js', // ceci va matcher un dossier et son contenu // (`my-directory/x` est résolu en `path/to/my-directory/x`) 'my-directory': 'path/to/my-directory', // un alias se terminant par /* va uniquement // matcher le contenu d'un dossier, par le dossier lui-même 'my-directory/*': 'path/to/my-directory/*' } } };

L’alias intégré $lib est contrôlé par config.kit.files.lib puisqu’il est utilisé pour le packaging.

Vous aurez besoin d’exécuter npm run dev pour que SvelteKit génère automatiquement la configuration d’alias dans jsconfig.json ou tsconfig.json.

appDir

  • par défaut "_app"

Le dossier où SvelteKit garde ses affaires, incluant les assets statiques (comme les fichiers JS et CSS) et les routes utilisées en interne.

Si paths.assets est précisé, il y aura donc deux dossiers d’applications — ${paths.assets}/${appDir} et ${paths.base}/${appDir}.

csp

La configuration des Content Security Policy. Les CSP aident à protéger vos utilisateurs contre les attaques de type “cross-site scripting” (XSS), en limitant les endroits depuis lesquelles les ressources peuvent être chargées. Par exemple, une configuration comme celle-ci...

svelte.config
/** @type {import('@sveltejs/kit').Config} */
const 
const config: {
    kit: {
        csp: {
 directives: {
   'script-src': string[];
 };
 reportOnly: {
   'script-src': string[];
   'report-uri': string[];
 };
        };
    };
}
@type{import('@sveltejs/kit').Config}
config
= {
kit: {
    csp: {
        directives: {
 'script-src': string[];
        };
        reportOnly: {
 'script-src': string[];
 'report-uri': string[];
        };
    };
}
kit
: {
csp: {
    directives: {
        'script-src': string[];
    };
    reportOnly: {
        'script-src': string[];
        'report-uri': string[];
    };
}
csp
: {
directives: {
    'script-src': string[];
}
directives
: {
'script-src': ['self'] }, // doit être précisé avec soit la directive `report-uri`, soit la direction `report-to`, ou // les deux
reportOnly: {
    'script-src': string[];
    'report-uri': string[];
}
reportOnly
: {
'script-src': ['self'], 'report-uri': ['/'] } } } }; export default
const config: {
    kit: {
        csp: {
 directives: {
   'script-src': string[];
 };
 reportOnly: {
   'script-src': string[];
   'report-uri': string[];
            };
        };
    };
}
@type{import('@sveltejs/kit').Config}
config
;

... empêcherait les scripts d’être chargés depuis des sites externes. SvelteKit va augmenter les directives spécifiées avec des nonces ou des hashes (en fonction du mode) pour tout style ou script inliné qu’il génère.

Pour ajouter un nonce pour des scripts et des liens manuellement inclus dans src/app.html, vous devriez utiliser un placehodler %sveltekit.nonce% (par exemple <script nonce="%sveltekit.nonce%">).

Lorsque les pages sont pré-rendues, l’en-tête de CSP est ajoutée via une balise <meta http-equiv> (notez que dans ce cas, les directives frame-ancestors, report-ui et sandbox seront ignorées).

Lorsque mode vaut 'auto', SvelteKit va utiliser des nonces pour les pages dynamiquement rendues et des hashes pour les pages pré-rendues. Utiliser des nonces pour les pages pré-rendues n’est pas sécurisé et donc interdit.

Notez que la plupart des transitions Svelte fonctionnent en créant un élément <style> inliné. Si vous en utilisez dans votre application, vous devez soit laisser la directive style-src non définie, soit ajouter unsafe-inline.

Si ce niveau de configuration est insuffisant et vous souhaitez avoir des pré-requis plus dynamiques, vous pouvez utiliser le hook handle pour créer votre propre CSP.

mode?: 'hash' | 'nonce' | 'auto';

Si oui ou non utiliser des hashes ou des nonces pour restreindre les éléments <script> et <style>. 'auto' va utiliser des hashes pour les pages prérendues, et des nonces pour les pages dynamiquement rendues.

directives?: CspDirectives;

Les directives qui seront ajoutées aux en-têtes Content-Security-Policy.

reportOnly?: CspDirectives;

Les directives qui seront ajoutées aux en-têtes Content-Security-Policy-Report-Only.

csrf

Protection contre les attaques de type cross-site request forgery (CSRF).

checkOrigin?: boolean;
  • par défaut true

Si oui ou non vérifier les en-têtes origin entrantes pour les soumissions de formulaire POST, PUT, PATCH, ou DELETE et vérifier qu’elle correspond à l’origine du serveur.

Pour permettre aux gens de faire des requêtes POST, PUT, PATCH, ou DELETE avec un Content-Type valant application/x-www-form-urlencoded, multipart/form-data, ou text/plain vers votre application depuis d’autres origines, vous aurez besoin de désactiver cette option. Soyez vigilant•e !

embedded

  • par défaut false

Si oui ou non l’application est embarquée dans une plus grande application. Si cette option vaut true, SvelteKit va ajouter ses gestionnaires d’évènement liés à la navigation (et autres) sur le parent de %sveltekit.body% plutôt que sur window, et passer les params venant du serveur plutôt que de les inférer depuis location.pathname.

Notez qu’il n’est généralement pas supporté d’embarquer plusieurs application SvelteKit sur la même page et d’y utiliser les fonctionnalités client de SvelteKit (les choses comme ajouter une entrée dans l’historique supposent qu’il n’y a qu’une seule instance).

env

La configuration des variables d’environnement

dir?: string;
  • par défaut "."

Le dossier dans lequel chercher des fichiers .env.

publicPrefix?: string;
  • par défaut "PUBLIC_"

Un préfixe qui signale qu’une variable d’environnement peut être exposée de manière sans risque au code client. Voir les sections $env/static/public et $env/dynamic/public. Notez que l’option de Vite envPrefix doit être définie indépendamment si vous utilisez la gestion des variables d’environnement de Vite — même l’utilisation de cette fonctionnalité ne devrait généralement pas être nécessaire.

privatePrefix?: string;
  • par défaut ""
  • disponible depuis la version v1.21.0

Un préfixe qui signale qu’il est dangereux d’exposer la variable d’environnement au code client. Les variables d’environnement ne correspondant ni au préfixe public ni au préfixe privé seront complètement supprimées. Voir les sections $env/static/private et $env/dynamic/private.

files

L’emplacement où trouver différents fichiers au sein de votre projet.

assets?: string;
  • par défaut "static"

un emplacement pour mettre des fichiers statiques qui devraient avoir des URLs stables et ne nécessitant pas de traitement, comme favicon.ico et manifest.json.

hooks?: {}
client?: string;
  • par défaut "src/hooks.client"

L’emplacement de vos hooks client.

server?: string;
  • par défaut "src/hooks.server"

L’emplacement de vos hooks serveur.

universal?: string;
  • par défaut "src/hooks"
  • disponible depuis la version v2.3.0

L’emplacement de vos hooks universels.

lib?: string;
  • par défaut "src/lib"

la librairie interne de votre application, accessible partout dans votre base de code en tant que $lib

params?: string;
  • par défaut "src/params"

un dossier contenant les matchers de paramètres

routes?: string;
  • par défaut "src/routes"

les fichiers qui définissent la structure de votre application (voir la section Routing)

serviceWorker?: string;
  • par défaut "src/service-worker"

l’emplacement du point d’entrée de votre service worker (voir la section Service workers)

appTemplate?: string;
  • par défaut "src/app.html"

l’emplacement du template pour les réponses HTML

errorTemplate?: string;
  • par défaut "src/error.html"

l’emplacement du template pour les réponses d’erreur de secours

inlineStyleThreshold

  • par défaut 0

Inline le CSS dans un bloc <style> à la fin du HTML. Cette option est un nombre qui définit la longueur maximale d’un fichier CSS en unités de code UTF-16, comme spécifié par la propriété String.length, à inliner. Tous les fichiers CSS nécessaires pour la page qui sont plus petits que cette valeur sont fusionnés et inlinés en un bloc <style>.

Ceci entraîne moins de requêtes initiales et peut améliorer votre score de First Contentful Paint. Toutefois, il génère des fichiers HTML plus lourd et réduit l’efficacité des caches de navigateur. Utilisez cette option avec prudence.

moduleExtensions

  • par défaut [".js", ".ts"]

Un tableau d’extensions de ficheirs que SvelteKit traitera comme des modules. Les fichiers avec des extensions qui ne correspondent ni à config.extensions ni à config.kit.moduleExtensions seront ignorés par le routeur.

outDir

  • par défaut ".svelte-kit"

Le dossier dans lequel SvelteKit écrit des fichiers lors des modes dev et build. Vous devriez exclure ce dossier de votre contrôle de version.

output

Les options liées au format de sortie de compilation

preloadStrategy?: 'modulepreload' | 'preload-js' | 'preload-mjs';
  • par défaut "modulepreload"
  • disponible depuis la version v1.8.4

SvelteKit va précharger les modules JavaScript nécessaire pour la page initiale pour éviter d’importer des “cascades”, entraînant des démarrages plus rapides de votre application. Il y a trois stratégies ayant des compromis différents :

  • modulepreload — utilise <link rel="modulepreload">. Ceci fournit les meilleurs résultats pour les navigateurs basés sur Chromium, dans les versions 115+ de Firefox, et dans les versions 17+ de Safari. Cette valeur est ignorée dans les navigateurs plus anciens.
  • preload-js — utilise <link rel="preload">. Empêche les cascades dans Chromium et Safari, mais Chromium va parser chaque module deux fois (une fois en tant que script, une fois en tant que module). Les modules seront requêtés deux fois par Firefox. C’est une bonne option si vous souhaitez maximiser la performance pour les utilisateurs et utilisatrices ayant un appareil iOS au prix d’une légère dégration pour les utilisateurs et utilisatrices de Chromium.
  • preload-mjs — utilise <link rel="preload"> mais avec l’extension .mjs qui empêche le double parsing de Chromium. Certains serveurs web statiques vont échouer à servir des fichiers .mjs ayant une en-tête Content-Type: application/javascript, ce qui va provoquer le plantage de votre application. Si cela ne vous concerne pas, cette option est celle qui fournit la meilleure performance pour le grand nombre de personnes, en attendant que modulepreload soit plus largement supporté
bundleStrategy?: 'split' | 'single' | 'inline';
  • par défaut 'split'
  • disponible depuis la version v2.13.0

L’option bundleStrategy affecte la manière dont les fichiers JavaScript et CSS de votre application sont chargés.

  • Si 'split', découpe l’application en plusieurs fichiers .js / .css afin qu’ils soient chargés en différé au fur et à mesure que l’utilisateur ou l’utilisatrice navigue sur votre application. C’est la valeur par défaut, et est recommandée pour la plupart des scénarios.
  • Si 'single', crée uniquement un bundle .js et un fichier .css contenant le code pour toute l’application.
  • Si 'inline', inline tout le code JavaScript et CSS de toute votre application dans le HTML. Le résultat est utilisable sans serveur (c-à-d que vous pouvez simplement ouvrir le fichier dans votre navigateur).

Lorsque vous utilisez 'split', vous pouvez également ajuster le comportement de bundling en définissant output.experimentalMinChunkSize et output.manualChunks dans le champ build.rollupOptions de votre configuration Vite.

Si vous souhaitez inliner vos assets, vous aurez besoin de définir l’option de Vite build.assetsInlineLimit à une valeur de taille appropriée, puis d’importer vos assets avec Vite.

vite.config
import { function sveltekit(): Promise<Plugin$1<any>[]>

Returns the SvelteKit Vite plugins.

sveltekit
} from '@sveltejs/kit/vite';
import { function defineConfig(config: UserConfig): UserConfig (+5 overloads)

Type helper to make it easier to use vite.config.ts accepts a direct {@link UserConfig } object, or a function that returns it. The function receives a {@link ConfigEnv } object.

defineConfig
} from 'vite';
export default function defineConfig(config: UserConfig): UserConfig (+5 overloads)

Type helper to make it easier to use vite.config.ts accepts a direct {@link UserConfig } object, or a function that returns it. The function receives a {@link ConfigEnv } object.

defineConfig
({
UserConfig.plugins?: PluginOption[] | undefined

Array of vite plugins to use.

plugins
: [function sveltekit(): Promise<Plugin$1<any>[]>

Returns the SvelteKit Vite plugins.

sveltekit
()],
build?: BuildEnvironmentOptions | undefined

Build specific options

build
: {
// inline tous les assets importés BuildEnvironmentOptions.assetsInlineLimit?: number | ((filePath: string, content: Buffer) => boolean | undefined) | undefined

Static asset files smaller than this number (in bytes) will be inlined as base64 strings. If a callback is passed, a boolean can be returned to opt-in or opt-out of inlining. If nothing is returned the default logic applies.

Default limit is 4096 (4 KiB). Set to 0 to disable.

@default4096
assetsInlineLimit
: var Infinity: numberInfinity
} });
src/routes/+layout
<script>
	// importe l'asset avec Vite
	import favicon from './favicon.png';
</script>

<svelte:head>
	<!-- cet asset sera inliné en tant qu'URL en base64 -->
	<link rel="icon" href={favicon} />
</svelte:head>
<script lang="ts">
	// importe l'asset avec Vite
	import favicon from './favicon.png';
</script>

<svelte:head>
	<!-- cet asset sera inliné en tant qu'URL en base64 -->
	<link rel="icon" href={favicon} />
</svelte:head>

paths

assets?: '' | `http://${string}` | `https://${string}`;
  • par défaut ""

Un chemin absolu d’où les fichiers de votre application sont servis. C’est utile si vos fichiers sont servis depuis un bucket de stockage, peu importe son type.

base?: '' | `/${string}`;
  • par défaut ""

Un chemin relatif à la racine qui doit commencer, mais pas finir, par / (par ex. /base-path), à moins que ce soit la chaîne de caractères vide. Cette option définit l’endroit depuis lequel votre application est servie et permet à l’application d’exister sur un chemin non-racine. Notez que vous devez préfixer tous vos liens relatifs à la racine avec la valeur base sinon ils pointeront vers la racine de votre domaine, et non vers votre base (c’est comme cela que fonctionnent les navigateurs). Vous pouvez utiliser base importé depuis $app/paths pour cela : <a href="{base}/your-page">Link</a>. Si vous vous retrouvez à écrire ceci régulièrement, il peut être pertinent de l’extraire dans un composant réutilisable.

relative?: boolean;
  • par défaut true
  • disponible depuis la version v1.9.0

Si oui ou non utiliser les chemins d’assets relatifs.

Si vaut true, les base et assets importés depuis $app/paths seront remplacés par des chemins d’assets relatifs lors du rendu côté serveur, résultant en du HTML plus portable. Si vaut false, les %sveltekit.assets% ainsi que les références aux artéfacts de compilation seront toujours des chemins relatifs à la racine, à moins que paths.assets ne soit une URL externe

Les pages de secours des SPA utiliseront toujours des chemins absolus, quelque soit la valeur de cette option.

Si votre application utilise un élément <base>, vous devriez définir cette option à false, sinon les URLs d’asset seront résolues de manière incorrecte en utilisant l’URL <base> plutôt que la page courante.

Dans la version 1.0, undefined était une valeur valide, et était utilisée par défaut. Dans ce cas, si paths.assets n’était pas externe, SvelteKit remplaçait %sveltekit.assets% avec un chemin relatif et utilisait des chemins relatifs pour référencer les artéfacts de compilation, mais base et assets importés depuis $app/paths restaient tels que définis dans votre configuration.

prerender

Voir la section prerender.

concurrency?: number;
  • par défaut 1

Le nombre de pages à être pré-rendues simultanément. JavaScript n’est exécuté que sur un seul thread, mais dans des cas où la performance de pré-rendu est liée au réseau (par exemple si vous chargez du contenu depuis un CMS distant) cette option peut accélérer les choses en traitant d’autres tâches en attendant les réponses du réseau.

crawl?: boolean;
  • par défaut true

Si oui ou non SvelteKit devrait trouver des pages à pré-rendre en suivant les liens depuis les entries.

entries?: var Array: ArrayConstructorArray<'*' | `/${string}`>;
  • par défaut ["*"]

Un tableau de pages à pré-rendre, ou depuis lesquelles commencer à chercher (si crawl: true). La chaîne de caractères * inclut toutes les routes ne contenant pas de paramètre [parameters] requis, avec les paramètres optionnels inclus comme vides (puisque SvelteKit ne sait pas quelle valeur ces paramètres devraient avoir).

handleHttpError?: PrerenderHttpErrorHandlerValue;
  • par défaut "fail"
  • disponible depuis la version v1.15.7

Comment répondre aux erreurs HTTP rencontrées lors du pré-rendu de l’application.

  • 'fail' — faire échouer la compilation
  • 'ignore' — ignorer l’échec en silence et continuer
  • 'warn' — continuer, mais afficher un avertissement
  • (details) => void — un gestionnaire d’erreur personnalisé qui prend un objet details ayant les propriétés status, path, referrer, referenceType et message. Si vous utilisez throw depuis cette fonction, la compilation va échouer
svelte.config
/** @type {import('@sveltejs/kit').Config} */
const 
const config: {
    kit: {
        prerender: {
 handleHttpError: ({ path, referrer, message }: {
   path: any;
   referrer: any;
     message: any;
 }) => void;
        };
    };
}
@type{import('@sveltejs/kit').Config}
config
= {
kit: {
    prerender: {
        handleHttpError: ({ path, referrer, message }: {
 path: any;
 referrer: any;
 message: any;
        }) => void;
    };
}
kit
: {
prerender: {
    handleHttpError: ({ path, referrer, message }: {
        path: any;
        referrer: any;
        message: any;
    }) => void;
}
prerender
: {
handleHttpError: ({ path, referrer, message }: {
    path: any;
    referrer: any;
    message: any;
}) => void
handleHttpError
: ({ path: anypath, referrer: anyreferrer, message: anymessage }) => {
// ignore un lien visant délibéremment une page 404 if (path: anypath === '/not-found' && referrer: anyreferrer === '/blog/how-we-built-our-404-page') { return; } // sinon faire échouer la compilation throw new
var Error: ErrorConstructor
new (message?: string, options?: ErrorOptions) => Error (+1 overload)
Error
(message: anymessage);
} } } };
handleMissingId?: PrerenderMissingIdHandlerValue;
  • par défaut "fail"
  • disponible depuis la version v1.15.7

Comment répondre lorsque les liens de hash d’une page pré-rendue à une autre ne correspondent à aucun id sur la page de destination.

  • 'fail' — faire échouer la compilation
  • 'ignore' — ignorer l’échec en silence et continuer
  • 'warn' — continuer, mais afficher un avertissement
  • (details) => void — un gestionnaire d’erreur personnalisé qui prend un objet details ayant les propriétés path, id, referrers, et message. Si vous utilisez throw depuis cette fonction, la compilation va échouer
handleEntryGeneratorMismatch?: PrerenderEntryGeneratorMismatchHandlerValue;
  • par défaut "fail"
  • disponible depuis la version v1.16.0

Comment répondre lorsqu’une entrée générée par l’export entries ne correspond pas à la route depuis laquelle elle a été générée.

  • 'fail' — faire échouer la compilation
  • 'ignore' — ignorer l’échec en silence et continuer
  • 'warn' — continuer, mais afficher un avertissement
  • (details) => void — un gestionnaire d’erreur personnalisé qui prend un objet details ayant les propriétés generatedFromId, entry, matchedId, et message. Si vous utilisez throw depuis cette fonction, la compilation va échouer
var origin: stringorigin?: string;
  • par défaut "http://sveltekit-prerender"

La valeur de url.origin lors du pré-rendu ; utile s’il est incluses dans du contenu rendu.

router

type?: 'pathname' | 'hash';
  • par défaut "pathname"
  • disponible depuis la version v2.14.0

Le type de routeur client à utiliser.

  • 'pathname' est la valeur par défaut et signifie que le chemin d’URL courant détermine la route
  • 'hash' signifie que la route est déterminée par location.hash. Dans ce cas, le SSR et le pré-rendu sont désactivés. Cette option est uniquement recommandée si pathname n’est pas une option, par exemple parce que vous ne contrôlez pas le serveur web depuis lequel votre application est déployée. Cette option a des contre-parties : vous ne pouvez pas utiliser de rendu côté serveur (ou de facto toute logique serveur), et vous devez vous assurer que les liens dans votre application commencent tous par #/, sans quoi ils ne fonctionneront pas. À part ces deux points, tout fonctionne exactement comme une application SvelteKit normale.
resolution?: 'client' | 'server';
  • par défaut "client"
  • disponible depuis la version v2.17.0

Comment déterminer la route à charger lors d’une navigation vers une nouvelle page.

Par défaut, SvelteKit va servir un manifeste de route au navigateur. Lors d’une navigation, ce manifeste est utilisé (au même titre que le hook reroute, s’il existe, pour déterminer les composants à charger et les fonctions load exécuter. Puisque tout se produit sur le client, cette décision peut être prise immédiatement. La contrepartie est que le manifeste a besoin d’être chargé et parsé avant que la première navigation puisse se produire, ce qui peut avoir un impact si votre application contient beaucoup de routes.

De manière alternative, SvelteKit peut déterminer la route sur le serveur. Ceci signifie que pour chaque navigation vers un chemin qui n’a pas encore été visité, le serveur sera requêté pour déterminer la route. Ceci a plusieurs avantages :

  • Le client n’a pas besoin de d’abord charger le manifeste de route, ce qui peut permettre des temps de chargement initiaux réduits
  • La liste des routes est cachée du public
  • Le serveur a une opportunité d’intercepter chaque navigation (par exemple au travers d’un middleware), permettant (par exemple) de l’A/B testing dont SvelteKit n’a pas conscience

La contrepartie est que pour les chemins non visités, la résolution va prendre un peu plus de temps (même si cela est atténué par le préchargement).

Lorsque vous utilisez une résolution de route côté serveur associée à du pré-rendu, la résolution est pré-rendue avec la route elle-même.

serviceWorker

register?: boolean;
  • par défaut true

Si oui ou non activer automatiquement le service worker, s’il existe.

files?(filepath: stringfilepath: string): boolean;
  • par défaut (filename) => !/\.DS_Store/.test(filename)

Détermine quels ficheirs de votre dossier static seront disponible dans $service-worker.files.

typescript

config?: (config: Record<string, any>config: type Record<K extends keyof any, T> = { [P in K]: T; }

Construct a type with a set of properties K of type T

Record
<string, any>) => Record<string, any> | void;
  • par défaut (config) => config
  • disponible depuis la version v1.3.0

Une fonction qui vous permet de modifier le fichier tsconfig.json généré. Vous pouvez muter la configuration (recommandé) ou en renvoyer une nouvelle. Ceci est utile pour étendre un fichier tsconfig.json partagé se trouvant à la racine d’un monorepo, par exemple.

version

La navigation côté client peut mal fonctionner si vous déployez une nouvelle version de votre application pendant que des gens sont en train de l’utiliser. Si le code de la nouvelle page est déjà chargé, il est possible que ses données soient périmées ; si ce n’est pas le cas, le manifeste de route de l’application peut éventuellement pointer vers un fichier JavaScript qui n’existe plus. SvelteKit vous aide à résoudre ce problème via la gestion de version.

Si SvelteKit rencontre une erreur pendant le chargement d’une page et détecte qu’une nouvelle version de l’application a été déployée (en utilisant le name défini ici, qui vaut par défaut un timestamp du build), il va alors se rattraper en déclenchant une navigation complète traditionnelle. Néanmoins, toutes les navigations ne vont pas nécessairement résulter en une erreur, par exemple si le code JavaScript de la prochaine page est déjà chargé. Si vous souhaitez toujours forcer une navigation complète dans ce genre de situations, utilisez des méthodes comme définir la valeur de pollInterval puis utiliser beforeNavigate :

+layout
<script>
	import { beforeNavigate } from '$app/navigation';
	import { updated } from '$app/state';

	beforeNavigate(({ willUnload, to }) => {
		if (updated.current && !willUnload && to?.url) {
			location.href = to.url.href;
		}
	});
</script>

Si vous définissez pollInterval à une valeur différente de zéro, SvelteKit va régulièrement demander en tâche de fond au serveur s’il existe de nouvelles versions, et définir la valeur de updated.current à true lorsqu’il en détecte une.

const name: void
@deprecated
name
?: string;

La chaîne de caractères représentant la version actuelle de l’application. Si précisée, cette valeur doit être déterministe (par ex. une référence de commit plutôt qu’un Math.random() ou Date.now().toString()), et vaut par défaut un timestamp du build.

Par exemple, pour utiliser le hash du commit actuel, vous pourriez utiliser git rev-parse HEAD :

svelte.config
import * as module "node:child_process"child_process from 'node:child_process';

export default {
	
kit: {
    version: {
        name: string;
    };
}
kit
: {
version: {
    name: string;
}
version
: {
name: stringname: module "node:child_process"child_process.function execSync(command: string): Buffer (+3 overloads)

The child_process.execSync() method is generally identical to {@link exec } with the exception that the method will not return until the child process has fully closed. When a timeout has been encountered and killSignal is sent, the method won’t return until the process has completely exited. If the child process intercepts and handles the SIGTERM signal and doesn’t exit, the parent process will wait until the child process has exited.

If the process times out or has a non-zero exit code, this method will throw. The Error object will contain the entire result from {@link spawnSync } .

Never pass unsanitized user input to this function. Any input containing shell metacharacters may be used to trigger arbitrary command execution.

@sincev0.11.12
@paramcommand The command to run.
@returnThe stdout from the command.
execSync
('git rev-parse HEAD').Buffer<ArrayBufferLike>.toString(encoding?: BufferEncoding, start?: number, end?: number): string

Decodes buf to a string according to the specified character encoding inencoding. start and end may be passed to decode only a subset of buf.

If encoding is 'utf8' and a byte sequence in the input is not valid UTF-8, then each invalid byte is replaced with the replacement character U+FFFD.

The maximum length of a string instance (in UTF-16 code units) is available as {@link constants.MAX_STRING_LENGTH } .

import { Buffer } from 'node:buffer';

const buf1 = Buffer.allocUnsafe(26);

for (let i = 0; i &#x3C; 26; i++) {
  // 97 is the decimal ASCII value for 'a'.
  buf1[i] = i + 97;
}

console.log(buf1.toString('utf8'));
// Prints: abcdefghijklmnopqrstuvwxyz
console.log(buf1.toString('utf8', 0, 5));
// Prints: abcde

const buf2 = Buffer.from('tést');

console.log(buf2.toString('hex'));
// Prints: 74c3a97374
console.log(buf2.toString('utf8', 0, 3));
// Prints: té
console.log(buf2.toString(undefined, 0, 3));
// Prints: té
@sincev0.1.90
@paramencoding The character encoding to use.
@paramstart The byte offset to start decoding at.
@paramend The byte offset to stop decoding at (not inclusive).
toString
().String.trim(): string

Removes the leading and trailing white space and line terminator characters from a string.

trim
()
} } };
pollInterval?: number;
  • par défaut 0

L’intervalle en millisecondes utilisé pour régulièrement vérifier (via “polling”) les changements de version. Si cette valeur vaut 0, aucun “polling” ne se produit.

Modifier cette page sur Github llms.txt

précédent suivant