web-dev-qa-db-fra.com

Scripts NPM: Lire le fichier .env

J'ai une exigence simple: dans mon fichier de scripts NPM.json j'ai la ligne:

{
    "scripts": {
        "example": "some-lib --argument --domain \"https://tld.com\""
    }
}

Maintenant, je veux que le "domaine" soit pris en compte.

Premier essai est d'utiliser $npm_package_config, qui fonctionne:

{
    "config": {
        "domain": "https://tld.com"
    },
    "scripts": {
        "example": "some-lib --argument --domain \"$npm_package_config_domain\""
    }
}

Mais je veux le domaine chargé d'un fichier .env local.

Je n'ai trouvé aucune solution là-bas pour lire le contenu d'un fichier env Intérieur des scripts NPM sur la ligne de commande.

Quelqu'un peut-il me donner un indice à une éventuelle solution pour ce problème?

14
David Vielhuber

Une solution beaucoup plus facile consiste simplement à utiliser BASH pour analyser le fichier env en ligne et extraire la variable souhaitée:

En supposant que votre .env Le fichier ressemble à:

DOMAIN=https://tld.com
"scripts": {
  "example": "some-lib --argument --domain $(grep DOMAIN .env | cut -d '=' -f2)"
} 
5
sarink

Surprise Personne n'en a mentionné l'environnement "OL Essayé et True Direnv à la configuration automatique pour votre répertoire de travail actuel. De cette façon, env est privé à votre machine locale et disponible pour tous vos scripts, y compris à l'intérieur de la base de code. Il est utile pour les choses qui ne rechercheront pas un fichier .env par défaut.

J'utilise tout cela sur ma machine non seulement dans les projets de développement.

DEL vaut la peine de vérifier! DIRENV

0
jbool24

Il y a une bibliothèque qui fait exactement ce que vous souhaitez suivre les meilleures pratiques 12Factor app: le paquet DOTENV de NPMJS.ORG

https://www.npmjs.com/package/dotenv

FTA:

$ node -r dotenv/config your_script.js dotenv_config_path=/custom/path/to/your/env/vars
0
Jack Murphy