Les variables d’environnement sont des valeurs dont votre application a besoin, mais qui existent en
dehors du code source de votre application. Elles vous permettent d’utiliser des informations
sensibles comme des clés d’API ou des authentifiants de bases de données sans les stocker dans votre
contrôle de version.
Lors du développement, et au moment de la compilation, les variables définids dans un fichier .env
ou .env.local seront ajoutées à l’environnement :
.env
API_KEY=19f401ba-e8b0-48c4-8c77-b0ebb26d97fe
Par défaut, chaque variable d’environnement est rendue implicitement disponible au sein de votre
application via les modules suivants :
Depuis SvelteKit 2.63, vous pouvez activer les variables d’environnement explicites, ce qui vous
permet plutôt d’importer vos variables d’environnement depuis ces modules :
Les variables d’environnement explicites seront le comportement par défaut de SvelteKit 3.
Les modules $env/*, ainsi que $app/environment, seront supprimés.
Mise en place
Pour activer les variables d’environnement explicites, mettez votre configuration à jour...
Le module $app/env/private ne peut pas être importé dans du code exécuté dans le navigateur, de
sorte que ne puissiez pas accidentellement révéler vos secrets dans un bundle JavaScript.
Variables publiques
Certaines variables peuvent être rendues accessibles dans le navigateur sans aucun danger — c’est
même parfois nécessaire. Pour ces variables, nous pouvons préciser public: true :
GOOGLE_ANALYTICS_ID peut maintenant être importée depuis $app/env/public, ou utilisée dans votre
fichier de template app.html en tant que %sveltekit.env.GOOGLE_ANALYTICS_ID% :
Hint: Be careful with the global flag g in your regex pattern, as it can lead to unexpected results. See MDN for more information.
requirement
The regex pattern.
A regex action.
(/G-[A-Z0-9]+/))}});
Si une valeur est invalide, l’application échouera à se lancer (ou à compiler). Pour en désactiver
une, utilisez l’export building de $app/env en combinaison avec un
validateur qui accepte une valeur optionnelle :
Utility for defining environment variables,
which are made available via $app/env/public and $app/env/private.
reference({SECRET(property)SECRET:{schema:v.StringSchema<undefined>|v.OptionalSchema<v.StringSchema<undefined>,undefined>;}:{// optionnel lors de la compilation, mais requis au démarrage de l'applicationschema(property)schema:v.StringSchema<undefined>|v.OptionalSchema<v.StringSchema<undefined>,undefined>:building(alias)constbuilding:booleanimportbuilding
SvelteKit analyses your app during the build step by running it. During this process, building is true. This also applies during prerendering.
Vous pouvez utiliser le validateurs pour rendre des valeurs optionnelles, ou les transformer (comme
transformer une string en booléen, ou parser du JSON) — voir la documentation de votre librairie de
validation pour en savoir plus.
Variables statiques
Par défaut, les variables sont dynamiques. Si une variable est configurée avec static: true, elle
sera inlinée dans le code applicatif, permettant des optimisations telles que l’élimination de code
mort :
Utility for defining environment variables,
which are made available via $app/env/public and $app/env/private.
reference({SHOW_DEBUG_OVERLAY(property)SHOW_DEBUG_OVERLAY:{public:true;static:true;schema:v.SchemaWithPipe<readonly[v.OptionalSchema<v.StringSchema<undefined>,"">,v.TransformAction<string,boolean>]>;}:{public(property)public:true:true,static(property)static:true:true, // transforme la valeur en true/false
schema(property)schema:v.SchemaWithPipe<readonly[v.OptionalSchema<v.StringSchema<undefined>,"">,v.TransformAction<string,boolean>]>:vimportv.pipe(alias)pipe<v.OptionalSchema<v.StringSchema<undefined>,"">,v.TransformAction<string,boolean>>(schema:v.OptionalSchema<v.StringSchema<undefined>,"">,item1:v.TransformAction<string,boolean>|v.PipeAction<string,boolean,never>):v.SchemaWithPipe<readonly[v.OptionalSchema<v.StringSchema<undefined>,"">,v.TransformAction<string,boolean>]>(+20overloads)exportpipe
Adds a pipeline to a schema, that can validate and transform its input.
Puisque cette variable est static, le composant <DebugOverlay> utilisé ici sera exclus du bundle
JavaScript à moins que SHOW_DEBUG_OVERLAY ne soit vrai :
Utility for defining environment variables,
which are made available via $app/env/public and $app/env/private.
reference({CACHE_TTL_SECONDS(property)CACHE_TTL_SECONDS:{description:string;}:{description(property)description:string:'Combien de temps cacher les réponses, en secondes'}});
Survoler CACHE_TTL_SECONDS dans le code de votre application affichera alors la description.