Nodo.js Migliori Pratiche dei Modi più Intelligenti per Gestire i File di configurazione e Variabili

24-Mar-2018 · 3 min a leggere

trovo la pratica di creazione di Nodo separato.file di configurazione js per gestire variabili di configurazione per diversi ambienti (sviluppo, test, staging e produzione) ingombranti.

Così ho finito con una soluzione che gestisce le variabili di configurazione per tutti gli ambienti con un singolo Nodo.file di configurazione js.

Per prima cosa, creiamo config.json nella cartella root / config come di seguito. L’idea è lo sviluppo è l’ambiente predefinito e contiene tutte le variabili di configurazione. Ripetere le variabili di configurazione in altri ambienti solo se si desidera sovrascrivere i valori delle variabili di configurazione predefinite presenti nell’ambiente di sviluppo predefinito.

Quindi, come puoi vedere, gli ambienti di test, staging e produzione sovrascrivono tutte le variabili config_id e config del database. E gli ambienti di staging e produzione sovrascrivono anche la variabile di configurazione node_port.

Quindi, scriviamo del codice per implementare la logica effettiva. Crea configurazione.js nella cartella root / config come di seguito. Questo codice:

  1. Legge il JSON trovato in root / config.file json.
  2. Imposta la configurazione predefinita al nodo di sviluppo trovato in config.json.
  3. Imposta la configurazione dell’ambiente sul nodo ambiente corrispondente trovato in config.json basato sul valore della variabile d’ambiente NODE_ENV (che a sua volta è impostato sullo sviluppo se null).
  4. Imposta final config all’unione di default e environment config chiamando il metodo di unione di lodash.
  5. Imposta la variabile globale gConfig con il valore di final config.
  6. Registra il valore di gConfig.

Infine, creiamo root / server.js per testare tutto questo in un browser. Sotto il codice è autoesplicativo. Testarlo impostando valori diversi per la variabile d’ambiente NODE_ENV.

Ed ecco alcuni screenshot dei test impostando la variabile d’ambiente NODE_ENV nel server.js allo sviluppo e alla messa in scena. Puoi vedere che per l’ambiente di staging, i valori di app_name, app_desc e json_indentation non cambiano e vengono prelevati dall’ambiente di sviluppo in cui i valori di config_id, node_port e database vengono sovrascritti.

l’output del Log per ambiente di sviluppo

L’uscita del Browser per ambiente di sviluppo

l’output del Log per l’ambiente di gestione temporanea

l’uscita del Browser per l’ambiente di gestione temporanea

È possibile clonare / download codice di cui sopra dal mio repository GitHub qui.

Come bonus, nulla ti impedisce di includere segreti come chiavi API o password in config.json. Basta crittografarlo a riposo prima di inviarlo al repository di origine utilizzando una soluzione di crittografia di livello enterprise come il servizio di gestione delle chiavi cloud (KMS) di Google Cloud Platform. E decrittografarlo su ogni distribuzione utilizzando il tuo strumento CI / CD preferito.

Controlla il mio post sul blog Utilizzando il servizio di gestione delle chiavi cloud di Google Cloud Platform (KMS) per crittografare / decifrare i segreti per maggiori informazioni.

Codifica felice!

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.