Node.JS Best Practices-smartere måder at administrere konfigurationsfiler og variabler på

Mar 24, 2018 * 3 min læst

jeg finder praksis med at oprette separat Node.js config filer til at styre config variabler til forskellige miljøer (udvikling, test, iscenesættelse og produktion) besværlige.

så jeg endte med en løsning, der styrer config variabler for alle miljøer med en enkelt Node.JS config fil.

lad os først oprette config.json i root / config mappe som nedenfor. Ideen er udvikling er standard miljø og indeholder alle config variabler. Du gentager kun konfigurationsvariabler i andre miljøer, hvis du vil tilsidesætte standardkonfigurationsvariabelværdierne, der findes i standardudviklingsmiljøet.

så som du kan se, tilsidesætter test, iscenesættelse og produktionsmiljøer alle config_id og database config variablerne. Og iscenesættelse og produktionsmiljøer også tilsidesætte node_port config variabel.

lad os derefter skrive noget kode for at implementere den faktiske logik. Opret config.js i root / config mappe som nedenfor. Denne kode:

  1. læser JSON fundet i root/config.JSON fil.
  2. indstiller standardkonfiguration til udviklingsknude fundet i config.json.
  3. indstiller miljøkonfiguration til tilsvarende miljøknude, der findes i config.json baseret på NODE_ENV miljøvariabel værdi (som i sig selv er standard for udvikling, hvis null).
  4. indstiller final config til foreningen af standard og miljø config ved at kalde lodash s flette metode.
  5. indstiller global variabel gConfig med værdien af final config.
  6. logger værdien af gConfig.

lad os endelig oprette root / server.js for at teste alt dette i en bro.ser. Nedenstående kode er selvforklarende. Test det ved at indstille forskellige værdier for NODE_ENV miljøvariabel.

og her er nogle skærmbilleder fra test ved at indstille NODE_ENV miljøvariablen i serveren.JS til udvikling og iscenesættelse. Du kan se, at for iscenesættelse miljø, værdierne for app_name, app_desc og json_indentation ændres ikke og hentes fra udviklingsmiljøet, hvor værdierne for config_id, node_port og database tilsidesættes.

Log output til udviklingsmiljø

output til udviklingsmiljø

Log output til iscenesættelse miljø

environment

du kan klone / hente ovenstående kode fra mit GitHub-arkiv her.

som en bonus forhindrer intet dig i at inkludere hemmeligheder som API-nøgler eller adgangskoder i config.json. Du skal blot kryptere det i hvile, før du skubber det til din kilde repository ved hjælp af en enterprise grade kryptering løsning som Google Cloud Platform Cloud Key Management Service (KMS). Og dekrypter det ved hver implementering ved hjælp af dit foretrukne CI / CD-værktøj.

Tjek mit blogindlæg ved hjælp af Google Cloud Platform Cloud Key Management Service (KMS) til at kryptere / dekryptere hemmeligheder for mere info.

Glad Kodning!

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.