
Valider l'utilisation des variables d'environnement dans la base de code.
# dotenv-diff
Analysez votre codebase pour détecter chaque référence de variable d'environnement. Cela vous aide à repérer les variables manquantes, inutilisées, dupliquées ou mal utilisées dès le début, avant qu'elles ne provoquent des erreurs d'exécution.
Prise en charge de première classe pour SvelteKit, Next.js et Nuxt. Fonctionne également bien dans les projets JavaScript/TypeScript modernes et les frameworks comme Node.js et Vue — ou toute autre configuration où vous souhaitez une comparaison fiable des fichiers .env.
[](https://codecov.io/gh/Chrilleweb/dotenv-diff)
[](https://scorecard.dev/viewer/?uri=github.com/Chrilleweb/dotenv-diff)
[](https://www.bestpractices.dev/projects/13691)
[](https://www.npmjs.com/package/dotenv-diff)
[](https://www.npmjs.com/package/dotenv-diff)
> **✨ Présenté dans [awesome-cli-apps](https://github.com/agarrharr/awesome-cli-apps#development)** - Une liste organisée d'applications CLI impressionnantes
---

---
## Pourquoi dotenv-diff ?
- Garantir que toutes les variables d'environnement requises sont définies
- Repérer les variables manquantes ou mal configurées
- Améliorer la collaboration en gardant les équipes alignées sur les variables requises
- Réduire le risque de commettre des données sensibles
- Évoluer facilement pour les monorepos et les configurations multi-environnements
---
## Comment ça fonctionne
→ Voir la [Documentation des capacités](https://github.com/chrilleweb/dotenv-diff/blob/main/docs/capabilities.md) pour plus de détails sur ce que le scanner vérifie et comment il fonctionne.
---
## Configuration (`--init`)
Générer un fichier de configuration par défaut :
```bash
dotenv-diff --init
```
→ Voir la [Documentation de configuration](https://github.com/chrilleweb/dotenv-diff/blob/main/docs/configuration_and_flags.md#configuration-file) pour plus de détails.
---
## Hooks Git et intégration CI/CD
Intégrez facilement dotenv-diff dans vos hooks Git ou vos pipelines CI/CD pour garantir la cohérence des variables d'environnement.
→ Voir la [Documentation des hooks Git](https://github.com/chrilleweb/dotenv-diff/blob/main/docs/git_hooks_ci.md) pour plus de détails.
## Avertissements spécifiques aux frameworks
Dans les projets SvelteKit, Next.js et Nuxt, dotenv-diff détecte les mauvaises utilisations de variables d'environnement spécifiques au framework.
```bash
▸ Problèmes de framework (SvelteKit)
──────────────────────────────────────────────────────────────────────
PUBLIC_API_URL $env/dynamic/private
les variables ne doivent pas
commencer par "PUBLIC_"
src/routes/+page.server.ts:3
──────────────────────────────────────────────────────────────────────
```
→ Voir la [Documentation des frameworks](https://github.com/chrilleweb/dotenv-diff/blob/main/docs/frameworks/index.md) pour plus de détails.
---
## Rédiger un bon `.env.example`
Un `.env.example` rédigé de manière à être plus facile à comprendre pour les nouveaux contributeurs de l'équipe :
```env
# Environnement Node (development, production, etc.)
# @optional
NODE_ENV=development
# L'URL de l'API publique est utilisée pour appeler notre backend
PUBLIC_API_URL=http://localhost:3000
# Jeton temporaire pour le bac à sable de l'API partenaire — demandez-en un nouveau à l'équipe intégrations
# @expire 2027-03-31
PARTNER_API_TOKEN=
```
→ En savoir plus : [Rédiger un bon `.env.example`](https://github.com/chrilleweb/dotenv-diff/blob/main/docs/env_example_best_practices.md)
---
## Avertissements de dérive
Une analyse compare votre code à un seul fichier — donc toute clé que vous ajoutez à `.env` et oubliez dans `.env.example` reste invisible jusqu'à ce qu'un nouveau contributeur clone le dépôt. Les avertissements de dérive détectent exactement cela :
```text
▸ Dérive entre .env et .env.example
──────────────────────────────────────────────────────────────────────
STRIPE_SECRET non documenté dans .env.example
──────────────────────────────────────────────────────────────────────
```
Activé par défaut ; désactivez-le avec `--no-drift-warnings`.
→ Voir [Avertissements de dérive](https://github.com/chrilleweb/dotenv-diff/blob/main/docs/drift_warnings.md) pour plus de détails.
---
## Avertissements d'expiration
Ajoutez des métadonnées d'expiration à vos variables d'environnement pour recevoir des avertissements lorsqu'elles sont sur le point d'expirer. Par exemple, dans votre fichier `.env` :
```bash
# @expire 2025-12-31
API_TOKEN=
```
→ Voir la [Documentation sur l'expiration](https://github.com/chrilleweb/dotenv-diff/blob/main/docs/expiration_warnings.md) pour plus de détails.
---
## Commentaires d'ignorance
Vous pouvez ignorer des avertissements spécifiques de variables d'environnement en ajoutant des commentaires dans votre code. Par exemple :
```javascript
const apiKey = process.env.API_KEY; // dotenv-diff-ignore
```
Cela est utile lorsque vous savez qu'un avertissement spécifique est sans danger dans votre code source.
→ Voir la [Documentation des commentaires d'ignorance](https://github.com/chrilleweb/dotenv-diff/blob/main/docs/ignore_comments.md) pour plus de détails.
---
## Supprimer les avertissements existants (`--baseline`)
Adoptez dotenv-diff dans des projets qui ont déjà des avertissements connus en enregistrant l'état actuel dans un fichier de référence. Les exécutions futures ne signaleront que les problèmes nouvellement introduits :
```bash
dotenv-diff --baseline
```
→ Voir la [Documentation sur la référence](https://github.com/chrilleweb/dotenv-diff/blob/main/docs/baseline.md) pour plus de détails.
---
## Expliquer une variable (`--explain`)
Inspectez une variable d'environnement spécifique pour voir où elle est définie, où elle est utilisée dans la codebase, et son statut global :
```bash
dotenv-diff --explain DATABASE_URL
```
→ Voir la [Documentation --explain](https://github.com/chrilleweb/dotenv-diff/blob/main/docs/configuration_and_flags.md#--explain-key) pour plus de détails.
---
## Prise en charge des monorepos
Dans les monorepos avec plusieurs applications et packages, vous pouvez inclure des dossiers partagés :
```json
{
"scripts": {
"dotenv-diff": "dotenv-diff --example .env.example --include-files '../../packages/**/*' --ignore VITE_MODE"
}
}
```
→ Voir la [Documentation sur les monorepos](https://github.com/chrilleweb/dotenv-diff/blob/main/docs/monorepo_support.md) pour plus de détails.
Cela permettra de :
- Analyser l'application actuelle
- Inclure les packages partagés
- Ignorer les variables utilisées uniquement dans des environnements spécifiques
---
## Codes de sortie
- `0` → Aucune erreur
- `1` → Erreurs trouvées (ou avertissements en mode strict)
---
## Documentation
→ Voir la [Documentation dotenv-diff](https://github.com/chrilleweb/dotenv-diff/blob/main/docs/index.md) pour la documentation complète
---
## Contribution
Les problèmes et les demandes de tirage sont les bienvenus.
→ Voir [CONTRIBUTING](https://github.com/chrilleweb/dotenv-diff/blob/main/CONTRIBUTING.md) pour plus de détails.
Merci à ces personnes formidables qui contribuent à ce projet :
<a href="https://github.com/Chrilleweb/dotenv-diff/graphs/contributors">
<img src="https://contrib.rocks/image?repo=Chrilleweb/dotenv-diff" />
</a>
---
## Licence
Sous licence [MIT](https://github.com/chrilleweb/dotenv-diff/blob/main/LICENSE).
Créé par [chrilleweb](https://github.com/chrilleweb)