Utiliser des variables d'environnement
Astro utilise le support intégré de Vite pour les variables d’environnement, et vous permet d’utiliser n’importe laquelle de ses méthodes pour travailler avec elles.
Notez que si toutes les variables d’environnement sont disponibles dans le code côté serveur, seules les variables d’environnement préfixées par PUBLIC_ sont disponibles dans le code côté client pour des raisons de sécurité.
SECRET_PASSWORD=password123PUBLIC_ANYBODY=thereDans cet exemple, PUBLIC_ANYBODY (accessible via import.meta.env.PUBLIC_ANYBODY) disponible dans le code du serveur ou du client, tandis que SECRET_PASSWORD (accessible via import.meta.env.SECRET_PASSWORD) ne sera disponible que côté serveur.
Les fichiers .env ne sont pas chargés dans les fichiers de configuration.
Variables d’environnement par défaut
Titre de la section Variables d’environnement par défautAstro inclut quelques variables d’environnement par défaut :
import.meta.env.MODE: Le mode dans lequel tourne votre site. C’estdevelopmentlorsque vous exécutezastro devetproductionlorsque vous exécutezastro build.import.meta.env.DEV:truesi votre site tourne en développement ;falsesinon. Toujours l’opposé deimport.meta.env.PROD.import.meta.env.BASE_URL: L’URL de base à partir de laquelle votre site est servi. Elle est déterminée par l’option de configurationbase.import.meta.env.SITE: C’est l’optionsitespécifiée dans le fichierastro.configde votre projet.import.meta.env.ASSETS_PREFIX: Le préfixe pour les liens d’actifs générés par Astro si l’option de configurationbuild.assetsPrefixest définie. Ceci peut être utilisé pour créer des liens d’actifs non gérés par Astro.
Utilisez-les comme n’importe quelle autre variable d’environnement.
const isProd = import.meta.env.PROD;const isDev = import.meta.env.DEV;Définir des variables d’environnement
Titre de la section Définir des variables d’environnementLe fichier .env
Titre de la section Le fichier .envLes variables d’environnement peuvent être chargées à partir des fichiers .env dans le répertoire de votre projet.
Vous pouvez aussi attacher un mode (soit production soit development) au nom du fichier, comme .env.production ou .env.development, ce qui fait que les variables d’environnement ne prennent effet que dans ce mode.
Il suffit de créer un fichier .env dans le répertoire du projet et d’y ajouter quelques variables.
# Ceci ne sera disponible que lorsque vous lancerez le serveur !DB_PASSWORD="foobar"# Ceci sera disponible partout !PUBLIC_POKEAPI="https://pokeapi.co/api/v2"Pour plus d’informations sur les fichiers .env, voir la documentation de Vite (EN).
Utilisation en CLI
Titre de la section Utilisation en CLIVous pouvez également ajouter des variables d’environnement lorsque vous exécutez votre projet :
PUBLIC_POKEAPI=https://pokeapi.co/api/v2 npm run devPUBLIC_POKEAPI=https://pokeapi.co/api/v2 pnpm run devPUBLIC_POKEAPI=https://pokeapi.co/api/v2 yarn run devObtenir des variables d’environnement
Titre de la section Obtenir des variables d’environnementLes variables d’environnement dans Astro sont accessibles avec import.meta.env, en utilisant la fonctionnalité import.meta ajoutée dans ES2020, au lieu de process.env.
Par exemple, utilisez import.meta.env.PUBLIC_POKEAPI pour obtenir la variable d’environnement PUBLIC_POKEAPI.
// Quand import.meta.env.SSR === trueconst data = await db(import.meta.env.DB_PASSWORD);
// Quand import.meta.env.SSR === falseconst data = fetch(`${import.meta.env.PUBLIC_POKEAPI}/pokemon/squirtle`);Lorsque vous utilisez SSR, les variables d’environnement peuvent être accédées au moment de l’exécution en fonction de l’adaptateur SSR utilisé. Avec la plupart des adaptateurs, vous pouvez accéder aux variables d’environnement avec process.env, mais certains adaptateurs fonctionnent différemment. Pour l’adaptateur Deno, vous utiliserez Deno.env.get(). Voir comment accéder au runtime Cloudflare pour gérer les variables d’environnement lors de l’utilisation de l’adaptateur Cloudflare. Astro vérifiera d’abord l’environnement du serveur pour les variables, et si elles n’existent pas, Astro les cherchera dans les fichiers .env.
Autocomplétion pour TypeScript
Titre de la section Autocomplétion pour TypeScriptPar défaut, Astro fournit une définition de type pour import.meta.env dans astro/client.d.ts.
Bien que vous puissiez définir plus de variables env personnalisées dans les fichiers .env.[mode], vous voudrez peut-être obtenir l’autocomplétion TypeScript pour les variables env définies par l’utilisateur qui sont préfixées par PUBLIC_.
Pour cela, vous pouvez créer un fichier env.d.ts dans src/ et configurer ImportMetaEnv comme ceci :
interface ImportMetaEnv { readonly DB_PASSWORD: string; readonly PUBLIC_POKEAPI: string; // plus de variables d'environnement...}
interface ImportMeta { readonly env: ImportMetaEnv;}