nod.js Best Practices-smartare sätt att hantera konfigurationsfiler och variabler

Mar 24, 2018 * 3 min läs

jag finner praxis att skapa separat nod.js config-filer för att hantera konfigurationsvariabler för olika miljöer (utveckling, testning, iscensättning och produktion) besvärliga.

så jag slutade med en lösning som hanterar konfigurationsvariabler för alla miljöer med en enda nod.JS konfigurationsfil.

låt oss först skapa config.json i root / config mapp som nedan. Tanken är att utveckling är standardmiljön och innehåller alla konfigurationsvariabler. Du upprepar bara konfigurationsvariabler i andra miljöer om du vill åsidosätta standardkonfigurationsvariabelvärdena som finns i standardutvecklingsmiljön.

så som du kan se, testar, staging och produktionsmiljöer alla config_id och databas config variabler. Och staging och produktionsmiljöer åsidosätter också node_port config-variabeln.

Låt oss sedan skriva lite kod för att implementera den faktiska logiken. Skapa config.js I root / config mapp som nedan. Denna kod:

  1. läser JSON som finns i root/config.json-fil.
  2. ställer in standardkonfiguration till utvecklingsnod som finns i config.json.
  3. ställer miljö config till motsvarande miljö nod finns i config.json baserat på NODE_ENV miljövariabelvärde (som i sig är standard för utveckling om null).
  4. ställer in slutlig konfiguration till unionen av standard-och miljökonfiguration genom att ringa lodashs sammanslagningsmetod.
  5. ställer in global variabel gConfig med värdet för slutlig konfiguration.
  6. loggar värdet på gConfig.

slutligen, låt oss skapa root / server.js för att testa allt detta i en webbläsare. Nedan är koden självförklarande. Testa det genom att ställa in olika värden för NODE_ENV miljövariabel.

och här är några skärmdumpar från testning genom att ställa in NODE_ENV miljövariabeln i server.js till utveckling och iscensättning. Du kan se att för staging environment ändras inte värdena för app_name, app_desc och json_indentation och hämtas från utvecklingsmiljön där värdena för config_id, node_port och databas åsidosätts.

logga ut för utvecklingsmiljö

Webbläsarutgång för utvecklingsmiljö

logga ut för staging miljö

Browser utgång för staging miljö

du kan klona / ladda ner ovanstående kod från mitt GitHub-arkiv här.

som en bonus hindrar ingenting dig från att inkludera hemligheter som API-nycklar eller lösenord i config.json. Kryptera det bara i vila innan du trycker på det till ditt källförråd med en krypteringslösning för företagsklass som Google Cloud Platforms Cloud Key Management Service (KMS). Och dekryptera det vid varje distribution med ditt favorit CI / CD-verktyg.

kolla in mitt blogginlägg med Google Cloud Platforms Cloud Key Management Service (KMS) för att kryptera / dekryptera hemligheter för mer info.

Lycklig Kodning!

Lämna ett svar

Din e-postadress kommer inte publiceras.