Description
Suite à la migration de la logique base de données et de la génération du schéma vers un package dédié (#2064), nous rencontrons un problème de couplage sur la gestion des environnements.
Actuellement, prisma.config.ts utilise dotenv pour charger conditionnellement des fichiers (ex: .env.integ ou .env.docker). Le fait que cette logique soit désormais dans un package pose problème : le package doit soit dupliquer les fichiers .env, soit connaître le chemin relatif vers la racine du projet, ce qui n'est pas propre.
L'objectif est d'extraire la logique de chargement du code applicatif pour la confier au shell via direnv.
PRs liées
N/A
Issues liées
Liée à l'issue #2064
Exemples simples
Au lieu de gérer la sélection du fichier en TypeScript, on utilise un fichier .envrc à la racine :
# .envrc
if [ "$INTEGRATION" = "true" ]; then
source_env .env.integ
elif [ "$DOCKER" = "true" ]; then
source_env .env.docker
else
source_env .env
fi
env_vars_required DB_URL
Ainsi, l'application et le package se contentent de lire process.env.DATABASE_URL sans se soucier de la provenance de la donnée.
Spécifications techniques
- Suppression de dotenv : Retirer les imports
dotenv/config et la logique de chargement conditionnel dans le code applicatif.
- Workflow développeur : Ajouter un
.envrc dans chaque apps et au niveau du root si necessare de partage des scripts.
- Mettre à jour le
README.md pour documenter l'usage de direnv (installation et direnv allow).
- Impact CI/CD & Docker : S'assurer que les environnements de production/CI continuent d'injecter ces variables, car le code ne fournira plus de valeurs via direnv.
Définition du fini
Description
Suite à la migration de la logique base de données et de la génération du schéma vers un package dédié (#2064), nous rencontrons un problème de couplage sur la gestion des environnements.
Actuellement, prisma.config.ts utilise dotenv pour charger conditionnellement des fichiers (ex: .env.integ ou .env.docker). Le fait que cette logique soit désormais dans un package pose problème : le package doit soit dupliquer les fichiers .env, soit connaître le chemin relatif vers la racine du projet, ce qui n'est pas propre.
L'objectif est d'extraire la logique de chargement du code applicatif pour la confier au shell via direnv.
PRs liées
N/A
Issues liées
Liée à l'issue #2064
Exemples simples
Au lieu de gérer la sélection du fichier en TypeScript, on utilise un fichier
.envrcà la racine :Ainsi, l'application et le package se contentent de lire
process.env.DATABASE_URLsans se soucier de la provenance de la donnée.Spécifications techniques
dotenv/configet la logique de chargement conditionnel dans le code applicatif..envrcdans chaque apps et au niveau du root si necessare de partage des scripts.README.mdpour documenter l'usage dedirenv(installation etdirenv allow).Définition du fini