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.
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 (EN).import.meta.env.SITE: Câest lâoptionsite (EN) spĂ©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.assetsPrefix (EN) est 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âenvironnementAu lieu dâutiliser process.env, avec Vite vous utilisez import.meta.env, qui utilise la fonctionnalitĂ© import.meta ajoutĂ©e dans ES2020.
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;}