Node.najlepsze praktyki js-inteligentniejsze sposoby zarządzania plikami konfiguracyjnymi i zmiennymi

Mar 24, 2018 · 3 min czytać

znajduję praktykę tworzenia osobnego węzła.pliki konfiguracyjne js do zarządzania zmiennymi konfiguracyjnymi dla różnych środowisk (development, testing, staging i production).

więc skończyłem z rozwiązaniem, które zarządza zmiennymi konfiguracyjnymi dla wszystkich środowisk za pomocą jednego węzła.plik konfiguracyjny js.

najpierw stwórzmy config.json w folderze root / config jak poniżej. Chodzi o to, że development jest domyślnym środowiskiem i zawiera wszystkie zmienne konfiguracyjne. Zmienne konfiguracyjne w innych środowiskach powtarzasz tylko wtedy, gdy chcesz nadpisać domyślne wartości zmiennych konfiguracyjnych Znalezione w domyślnym środowisku programistycznym.

jak widać, środowiska testowe, staging i produkcyjne nadpisują config_id i zmienne konfiguracyjne bazy danych. Środowiska staging i produkcyjne również nadpisują zmienną konfiguracyjną node_port.

następnie napiszmy trochę kodu, aby zaimplementować rzeczywistą logikę. Utwórz konfigurację.js w folderze root / config jak poniżej. Ten kod:

  1. odczytuje JSON znaleziony w root / config.plik json.
  2. Ustawia domyślną konfigurację na węzeł deweloperski znaleziony w konfiguracji.json.
  3. Ustawia konfigurację środowiska na odpowiedni węzeł środowiska znaleziony w konfiguracji.json oparty na wartości zmiennej środowiskowej NODE_ENV (która domyślnie jest rozwijana, jeśli jest null).
  4. Ustawia final config na połączenie konfiguracji domyślnej i środowiskowej przez wywołanie metody merge lodasha.
  5. Ustawia globalną zmienną gconfig z wartością finalnej konfiguracji.
  6. rejestruje wartość gConfig.

na koniec stwórzmy root / server.js, aby przetestować to wszystko w przeglądarce. Poniższy kod jest oczywisty. Przetestuj go, ustawiając różne wartości dla zmiennej środowiskowej NODE_ENV.

a oto kilka zrzutów ekranu z testowania przez ustawienie zmiennej środowiskowej node_env w serwerze.js do rozwoju i inscenizacji. Możesz zobaczyć, że w środowisku tymczasowym wartości dla app_name, app_desc i json_indentation nie zmieniają się i są pobierane ze środowiska programistycznego, gdzie jako wartości dla config_id, node_port i bazy danych są nadpisywane.

wyjście dziennika dla środowiska programistycznego

wyjście przeglądarki dla środowiska programistycznego

wyjście dziennika dla środowiska postojowego

wyjście przeglądarki dla środowiska testowego

możesz sklonować / pobrać powyższy kod z mojego repozytorium GitHub tutaj.

jako bonus, nic nie stoi na przeszkodzie, aby włączyć sekrety, takie jak klucze API lub hasła w konfiguracji.json. Po prostu zaszyfruj go w spoczynku, zanim wyślesz go do repozytorium źródłowego, korzystając z rozwiązania szyfrującego klasy korporacyjnej, takiego jak usługa zarządzania kluczami w chmurze Google Cloud Platform (kms). I odszyfruj go przy każdym wdrożeniu za pomocą ulubionego narzędzia CI / CD.

Sprawdź mój post na blogu za pomocą usługi zarządzania kluczami w chmurze Google Cloud Platform (kms), aby zaszyfrować / odszyfrować sekrety, aby uzyskać więcej informacji.

Szczęśliwego Kodowania!

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.