Как мне структурировать централизованный файл конфигурации для переменных среды в узле? - PullRequest
1 голос
/ 28 января 2020

У меня есть приложение узла, которое развернуто в различных сетях, поэтому переменные env меняются во всех них. В настоящее время process.env используется повсеместно и растет, поэтому становится трудно управлять, отслеживать, настраивать и т. Д. c.

Как лучше всего организовать и структурировать этот тип проблемы? Я думал о том, чтобы просто написать класс с функцией и картой, которая возвращает то, что я прошу, и вызвать его из соответствующих файлов, это хороший, простой подход?

Ответы [ 2 ]

0 голосов
/ 28 января 2020

В вашем проекте может быть файл .env . Например,

PORT=5000
USER_TOKEN_SECRET='yourSecret'
MONGODB_URI='mongodb://localhost/test'

после того, как он используется в вашем конфигурационном файле

require('dotenv').config();
import env from 'env-var';

export const mongoUrl = env.get('MONGODB_URI').asString();
export const apiUrl = env.get('API_URL').asString();
0 голосов
/ 28 января 2020

Я использую пакет config для этой цели. Это позволяет мне загружать различные переменные окружения в качестве параметров конфигурации.

Например, я могу сделать

  const config = require( 'config' )
  const myAppConfig = config.get( 'MyApp' )
  const privateKey = myAppConfig.privateKey
  const publicKey = myAppConfig.publicKey

. В каталоге / config можно найти различные файлы конфигурации. Вы можете прочитать о них; они имеют сложную настройку, подходящую для всех типов сред развертывания.

Пакет также ищет в этом каталоге файл с именем custom-environment-variables.json. Он определяет, как сопоставить переменные среды с параметрами конфигурации.

Вот пример того файла, который загружает переменные среды MY_PRIVATE_KEY и MY_PUBLIC_KEY.

{
  "MyApp" : {
    "privateKey": "MY_PRIVATE_KEY",
    "publicKey": "MY_PUBLIC_KEY"
  }
}

Этот подход к конфигурации очень прочный и гибкий.

...