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=there
Dans 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âestdevelopment
lorsque vous exécutezastro dev
etproduction
lorsque vous exécutezastro build
.import.meta.env.DEV
:true
si votre site tourne en développement ;false
sinon. 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.config
de 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 dev
PUBLIC_POKEAPI=https://pokeapi.co/api/v2 pnpm run dev
PUBLIC_POKEAPI=https://pokeapi.co/api/v2 yarn run dev
Obtenir 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;}