Sådan tilpasses Node.js .env-filer til forskellige miljøfaser

Har du nogensinde befundet dig i en situation, hvor du havde brug for tilpassede miljøvariabler til forskellige udviklingsstadier i din app? Her er en løsning med en linje.

Udvikling har været meget lettere siden opfindelsen af .envfilen. Du kan nemt indstille dine miljøvariabler og værdier med syntaks ENV_VARIABLE=VALUEog boom! Disse variabler blev indlæst som dine miljøvariabler, hvilket gør det muligt at få hurtig adgang til dem:

console.log(process.env.ENV_VARIABLE)

Hvis du stadig undrer dig over, hvad alt dette betyder, er du sandsynligvis ny i .envfilen. Det er faktisk en simpel konfigurationstekstfil, der bruges til at definere nogle variabler, du vil overføre til din applikations miljø.

Denne fil har brug for noget som en parser for at få den til at fungere. Parseren læser de variable definitioner en efter en og parser dem til miljøet. Det bruger formatet ENV_VARIABLE = VALUE (i tilfælde af Node.js process.env[ENV_VARIABLE]=VALUE:).

Selvfølgelig er dette ikke en indbygget funktion i Node.js. Du skal konstruere det med et populært modul kaldet dotenv .

Det er en god løsning, da det virkelig har gjort udviklingen lettere mellem co-udviklere og på tværs af dev-samfundet som helhed. Jeg havde personligt brugt dotenv- modulet, indtil jeg blev strandet og forsøgte at få en løsning, der kunne få mig til at bruge en anden konfigurationsfil til et bestemt miljø. Det ville være endnu køligere ... ikke? Ja! Men desværre er dotenvmodulet giver os ikke denne godbid.

Så hvad er det næste? Vi har brug for denne ting for at gøre udvikling og test nemmere på tværs af forskellige udviklingsstadier!

Hvad med tilpassede .env-filer til forskellige miljøfaser?

Tror du ikke, det ville være en god løsning? Definere tilpassede miljøvariabler ved blot at oprette en .env.envname- fil? Fedt nok! Det er, hvad custom-env er kommet til at gøre.

Custom env er et bibliotek bygget til at gøre udviklingen lettere ved at tillade flere .env-konfigurationer til forskellige miljøer. Dette gøres ved at indlæse miljøvariabler fra en .env.envname-fil i nodens process.envobjekt.

Installation

Grib det bare med følgende kommando:

npm i custom-env

Anvendelse

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

Som standard vælger custom-env .env-filen til dit udviklingsstadium. For at tilpasse til et andet trin skal du dog tilføje navnet som et suffiks som i .env.envname.

Eksempel

Vi kan definere en tilpasset miljøvariabel til en iscenesættelsesudvikling.

  • Opret en .env.staging-fil
  • Definer dine variabler
APP_ENV=staging APP_NAME=custom environment app DB_HOST=localhost DB_USER=user DB_PASS=pass
  • Få adgang til dine variabler
// 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)

Forventet output

staging custom environment app localhost user pass

Det er det, ret let. Du er velkommen til at definere flere variabler til forskellige faser, du tror du har, som:

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

Indstil til det aktuelle miljø

Du kan fortælle custom-env at bruge en konfiguration, der matcher dit nuværende udviklingsstadium ved at videregive sandttil env()metode.

Eksempel

Fil: 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)

Lad os nu definere en mellemkonfigurationsfil:

Fil: .env.staging

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

Lad os nu tjene knudepunkt med iscenesætningsmiljøet:

NODE_ENV=staging node index.js

Forventet output

Værsgo!

Fuld dokumentation

For den fulde dokumentation af custom-env, besøg npm-siden//www.npmjs.com/package/custom-env

Kildekode

Du kan få eller bidrage til custom-envkildekode på //github.com/erisanolasheni/custom-env

Glad kodning!