Travailler avec des fichiers .env est très utile en développement.

L’exemple le plus courant pourrait ressembler à ceci:

1
2
export SERVER_URL='blablabla'
...

Il suffit de sourcer ce fichier et tout l’environnement d’exécution est configuré avec les bonnes variables.

Par contre, ce pose problème avec des outils comme VSCode. Les mots clés comme export ne sont pas compatibles. VSCode attend en effet uniquement des fichiers composés de clés/ valeurs.

Par exemple, la configuration VScode .vscode/launch.json suivante n’est pas compatible avec ce genre de fichiers .env:

1
2
3
4
5
6
7
8
9
{
"name": "Python: Current File",
"type": "python",
"request": "launch",
"program": "${file}",
"console": "integratedTerminal",
"stopOnEntry": true,
"python.envFile": ".env"
}

La solution à ce problème est de travailler avec des fichiers composés de clés/ valeurs uniquement comme ceci:

1
2
SERVER_URL='blablabla'
...

Ce sera compatible avec VSCode et pour que cela fonctionne dans un Terminal il ne faut plus utiliser la commande source mais la commande suivante:

1
2
3
4
5
6
7
8
9
10
11
12
# Cette commande gère les espaces grâce au -d et ignore les lignes commentées grâce au grep -v '^#'

$ export $(grep -v '^#' .env | xargs -d '\n')


Sur Mac, il faut utiliser la commande suivante:

$ export $(grep -v '^#' .env | xargs -0)

Ou alternative:

$ eval $(cat .env | sed 's/^/export /')