Node.js Best Practices-slimmere manieren om configuratiebestanden en variabelen te beheren

Mar 24, 2018 * 3 min lezen

ik vind de praktijk van het creëren van aparte Node.js configuratiebestanden om configuratievariabelen te beheren voor verschillende omgevingen (ontwikkeling, testen, staging en productie) omslachtig.

dus eindigde ik met een oplossing die configuratievariabelen beheert voor alle omgevingen met één enkele Node.js configuratiebestand.

laten we eerst config maken.json in root / config map zoals hieronder. Het idee is ontwikkeling is de standaard omgeving en bevat alle configuratievariabelen. U herhaalt alleen configuratievariabelen in andere omgevingen als u de standaard configuratievariabele waarden in de standaardontwikkelingsomgeving wilt overschrijven.

zoals u kunt zien, hebben test -, staging-en productieomgevingen allemaal voorrang op de config_id-en database-configuratievariabelen. En staging en productie omgevingen overschrijven ook de node_port config variabele.

laten we vervolgens wat code schrijven om de werkelijke logica te implementeren. Config aanmaken.js in root / config map zoals hieronder. Deze code:

  1. leest de JSON gevonden in root / config.JSON dossier.
  2. stelt standaard config in op ontwikkelknooppunt gevonden in config.json.
  3. stelt omgevingsconfiguratie in op overeenkomstige omgevingsnode gevonden in config.json gebaseerd op node_env omgevingsvariabele waarde (die zelf standaard ontwikkeling als null).
  4. stelt de definitieve configuratie in op de Unie van standaard-en omgevingsconfiguratie door lodash ‘ s merge methode aan te roepen.
  5. stelt globale variabele gConfig in met de waarde van de uiteindelijke configuratie.
  6. registreert de waarde van gConfig.

tot slot, laten we root/server maken.js om dit alles te testen in een browser. Onderstaande code spreekt voor zich. Test het door verschillende waarden in te stellen voor de omgevingsvariabele NODE_ENV.

en hier zijn enkele screenshots van testen door de omgevingsvariabele NODE_ENV in server in te stellen.js aan ontwikkeling en enscenering. Je kunt zien dat Voor staging environment, de waarden voor app_name, app_desc en json_indentation niet veranderen en worden opgehaald uit de ontwikkelomgeving waar als de waarden voor config_id, node_port en database worden overschreven.

Log output voor de ontwikkeling van de omgeving

Browser-uitgang voor de ontwikkeling van de omgeving

Log output voor staging-omgeving

Browser-uitgang voor staging-omgeving

U kunt kloon / download bovenstaande code van mijn GitHub repository hier.

als bonus, niets weerhoudt u van het opnemen van geheimen zoals API sleutels of wachtwoorden in config.json. Gewoon versleutelen in rust voordat u het pushen naar uw bron repository met behulp van een enterprise grade encryptie-oplossing zoals Google Cloud Platform ‘ s Cloud Key Management Service (KMS). En decoderen bij elke implementatie met behulp van uw favoriete CI / CD tool.

bekijk mijn blogpost met behulp van de Cloud Key Management Service (KMS) van Google Cloud Platform om geheimen te versleutelen / decoderen voor meer informatie.

Gelukkig Programmeren!

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.