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 /// file: .env.local 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 : - [`$env/static/private`]($env-static-private) - [`$env/static/public`]($env-static-public) - [`$env/dynamic/private`]($env-dynamic-private) - [`$env/dynamic/public`]($env-dynamic-public) ## Variables d'environnement explicites [!VO]Explicit environment variables 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 : - [`$app/env/private`]($app-env-private) - [`$app/env/public`]($app-env-public) Additionnellement, le module [`$app/environment`]($app-environment) est renommé en [`$app/env`]($app-env). > [!NOTE] 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 [!VO]Setup Pour activer les variables d'environnement explicites, mettez votre configuration à jour... ```js /// file: svelte.config.js export default { kit: { experimental: { +++explicitEnvironmentVariables: true+++ } } }; ``` ... et ajoutez un fichier `src/env.ts` (ou `src/env.js`) exportant un objet `variables` : ```ts /// file: src/env.ts import { defineEnvVars } from '@sveltejs/kit/hooks'; export const variables = defineEnvVars({ // ... }); ``` Chaque valeur de l'objet passée à [`defineEnvVars`](@sveltejs-kit-hooks#defineEnvVars) est un objet [`EnvVarConfig`](@sveltejs-kit#EnvVarConfig) qui configure la variable d'environnement. > [!NOTE] `defineEnvVars` renvoie son argument inchangé — cette fonction n'existe que pour vous > aider avec le typage. ### Variables privées [!VO]Private variables Par défaut, toutes les variables sont considérées privées. Par exemple, vous ne souhaitez pas révéler votre `API_KEY` : ```ts /// file: src/env.ts import { defineEnvVars } from '@sveltejs/kit/hooks'; export const variables = defineEnvVars({ +++API_KEY: {}+++ }); ``` > [!NOTE] Puisqu'aucune configuration n'est nécessaire pour cette variable, nous pouvons utiliser un > objet vide (`{}`). Maintenant que `API_KEY` est défini, elle peut être importée dans le code applicatif via `$app/env/private` : ```js import { API_KEY } from '$app/env/private'; ``` 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 [!VO]Public variables 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` : ```ts /// file: src/env.ts import { defineEnvVars } from '@sveltejs/kit/hooks'; export const variables = defineEnvVars({ GOOGLE_ANALYTICS_ID: { +++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%` : ```html
%sveltekit.head%