Comment personnaliser les fichiers .env Node.js pour différentes étapes de l'environnement

Vous êtes-vous déjà retrouvé dans une situation où vous aviez besoin de variables d'environnement personnalisées pour différentes étapes de développement de votre application? Voici une solution en une seule ligne.

Le développement a été beaucoup plus facile depuis l'invention du .envfichier. Vous pouvez facilement définir vos variables et valeurs d'environnement avec la syntaxe ENV_VARIABLE=VALUEet le boom! Ces variables ont été chargées en tant que variables d'environnement, ce qui permet d'y accéder rapidement:

console.log(process.env.ENV_VARIABLE)

Au cas où vous vous demandez toujours ce que tout cela signifie, eh bien, vous êtes probablement nouveau dans le .envfichier. Il s'agit en fait d'un simple fichier texte de configuration utilisé pour définir certaines variables que vous souhaitez transmettre à l'environnement de votre application.

Ce fichier a besoin d'un quelque chose comme un analyseur pour le faire fonctionner. L'analyseur lit les définitions de variables une par une et les analyse dans l'environnement. Il utilise le format ENV_VARIABLE = VALUE (dans le cas de Node.js :)process.env[ENV_VARIABLE]=VALUE .

Bien sûr, ce n'est pas une fonctionnalité intégrée à Node.js. Vous devez le concevoir avec un module populaire appelé dotenv .

C'est une belle solution de contournement, car elle a vraiment facilité le développement entre les co-développeurs et l'ensemble de la communauté des développeurs. J'avais personnellement utilisé le module dotenv , jusqu'à ce que je me retrouve à essayer d'obtenir une solution qui pourrait me faire utiliser un fichier de configuration différent pour un environnement particulier. Ce serait encore plus cool… non? Oui! Mais malheureusement, le dotenvle module ne nous fournit pas ce bonus.

Alors, quelle est la prochaine étape? Nous avons besoin de cette solution pour faciliter le développement et les tests à travers les différentes étapes de développement!

Qu'en est-il des fichiers .env personnalisés pour différentes étapes de l'environnement?

Ne pensez-vous pas que ce serait une bonne solution? Définition de variables d'environnement personnalisées en créant simplement un fichier .env.envname ? Cool! C'est ce que custom-env est venu faire.

L'environnement personnalisé est une bibliothèque conçue pour faciliter le développement en autorisant plusieurs configurations .env pour différents environnements. Cela se fait en chargeant des variables d'environnement à partir d'un fichier .env.envname dans l' process.envobjet du nœud .

Installation

Saisissez-le simplement avec la commande suivante:

npm i custom-env

Usage

require('custom-env').env()

Par défaut, custom-env sélectionne le fichier .env pour votre étape de développement. Cependant, pour personnaliser une étape différente, ajoutez le nom comme suffixe comme dans .env.envname.

Exemple

Nous pouvons définir une variable d'environnement personnalisée pour un développement intermédiaire.

  • Créer un fichier .env.staging
  • Définissez vos variables
APP_ENV=staging APP_NAME=custom environment app DB_HOST=localhost DB_USER=user DB_PASS=pass
  • Accédez à vos variables
// Require custom-env and set your preferred env file require ('custom-env').env('staging') console.log(process.env.APP_ENV) console.log(process.env.APP_NAME) console.log(process.env.DB_HOST) console.log(process.env.DB_PASS)

Production attendue

staging custom environment app localhost user pass

Voilà, assez facile. N'hésitez pas à définir plus de variables pour les différentes étapes que vous pensez avoir, comme:

.env.testing, .env.staging, .env.server1, .env.server2, .env.localhost

Définir sur l'environnement actuel

Vous pouvez dire à custom-env d'utiliser une configuration qui correspond à votre stade de développement actuel en passant trueà la env()méthode.

Exemple

Fichier: index.js

// Pass true to env() to make it use the current environment stage. require('custom-env').env(true) console.log(process.env.APP_NAME) console.log(process.env.USERNAME) console.log(process.env.PASSKEY)

Définissons maintenant un fichier de configuration intermédiaire:

Fichier: .env.staging

APP_NAME=Staging Node App USER_NAME=John PASSKEY=J*h*

Servons maintenant node avec l'environnement de test:

NODE_ENV=staging node index.js

Production attendue

Voilà!

Documentation complète

Pour la documentation complète de custom-env, visitez la page npm//www.npmjs.com/package/custom-env

Code source

Vous pouvez obtenir ou contribuer à l' environnement personnalisécode source sur //github.com/erisanolasheni/custom-env

Bon codage!