Aller au contenu

Incorporation expérimentale des variables d'environnement privées provenant de meta

Type : boolean
Par défaut : false

Ajouté à la version : astro@5.13.0 Nouveau

Astro vous permet de configurer un schéma avec sûreté du typage pour vos variables d’environnement, et convertit les variables importées via astro:env avec le type attendu. Il s’agit de la méthode recommandée pour utiliser les variables d’environnement dans Astro, car elle vous permet de visualiser et de gérer facilement si vos variables sont publiques ou secrètes, disponibles sur le client ou uniquement sur le serveur lors de la compilation, ainsi que le type de données de vos valeurs.

Cependant, vous pouvez toujours accéder directement à vos variables d’environnement via process.env ainsi que import.meta.env si nécessaire. C’était la seule façon d’utiliser les variables d’environnement dans Astro avant l’ajout de astro:env dans Astro 5.0, et sa gestion de import.meta.env inclut une logique qui était destinée aux versions antérieures d’Astro et qui n’est plus nécessaire.

L’option experimental.staticImportMetaEnv met à jour le comportement lors de l’accès direct à import.meta.env pour s’aligner sur la gestion des variables d’environnement par Vite et garantit que les valeurs de import.meta.env sont toujours intégrées au code.

Actuellement, les variables d’environnement non publiques sont remplacées par une référence à process.env. De plus, Astro peut également convertir le type de valeur de vos variables d’environnement utilisées via import.meta.env, ce qui peut empêcher l’accès à certaines valeurs telles que les chaînes de caractères "true" (qui est convertie en valeur booléenne) et "1" (qui est convertie en nombre).

L’option experimental.staticImportMetaEnv simplifie le comportement par défaut d’Astro, le rendant plus facile à comprendre et à utiliser. Astro ne remplacera plus aucune variable d’environnement provenant de import.meta.env par un appel à process.env et ne forcera plus la conversion des valeurs.

Pour activer cette fonctionnalité, ajoutez l’option expérimentale dans votre configuration Astro :

astro.config.mjs
import { defineConfig } from "astro/config"
export default defineConfig({
experimental: {
staticImportMetaEnv: true,
}
})

L’activation de cette option expérimentale ne convertira plus les valeurs des chaînes de caractères en booléens ou en nombres, ni ne transformera les valeurs de import.meta.env en appels à process.env. Cela aligne le comportement de import.meta.env dans Astro avec celui de Vite.

Dans une future version majeure, Astro adoptera ce comportement par défaut, mais vous pouvez opter pour le comportement futur plus tôt en utilisant l’option experimental.staticImportMetaEnv et, si nécessaire, en mettant à jour votre projet en conséquence.

Si vous vous appuyiez sur la coercition, vous devrez peut-être mettre à jour le code de votre projet pour l’appliquer manuellement :

src/components/MonComposant.astro
const enabled: boolean = import.meta.env.ENABLED;
const enabled: boolean = import.meta.env.ENABLED === "true";

Si vous comptiez sur la transformation en process.env, vous devrez peut-être mettre à jour le code de votre projet pour l’appliquer manuellement :

src/components/MonComposant.astro
const enabled: boolean = import.meta.env.DB_PASSWORD;
const enabled: boolean = process.env.DB_PASSWORD;

Vous devrez peut-être également mettre à jour les types :

src/env.d.ts
interface ImportMetaEnv {
readonly PUBLIC_POKEAPI: string;
readonly DB_PASSWORD: string;
readonly ENABLED: boolean;
readonly ENABLED: string;
}
interface ImportMeta {
readonly env: ImportMetaEnv;
}
namespace NodeJS {
interface ProcessEnv {
DB_PASSWORD: string;
}
}

Si vous avez besoin de plus de contrôle sur les variables d’environnement dans Astro, nous vous recommandons d’utiliser astro:env.

Contribuer Communauté Parrainer