Как указать переменные env в приложении узла? - PullRequest
0 голосов
/ 27 октября 2018

Много ссылок на библиотеку dotenv , которую можно использовать, когда вы хотите указать переменные env. Но почему? Я могу просто указать мою переменную в файле следующим образом:

var dev = {

}

var prod = {

}

var config = null;

if (process.env.NODE_ENV === 'production') {
    config = prod
} else {
    config = dev
}

exports.config = config

и присвойте мою переменную в npm srcipts, например:

"scripts": {
    "start": "NODE_ENV=dev node bin/dev",
    "production": "NODE_ENV=production node bin/production"
}

Безопасен ли мой путь? Почему дотенв рекомендуемый способ? Почему я должен создавать файлы .env вместо моего config.js?

Ответы [ 2 ]

0 голосов
/ 27 октября 2018

@ Настро, я укажу немного и простой другой подход.

Разработайте ваше приложение на 100% независимо от окружающей среды. Другими словами, держитесь подальше * от версий файлов в коде или от множества , если присваивает различные значения глобальным переменным, атрибутам сеансов и т. Д.

Благоприятствуйте своей среде с должными переменами и ценностями. Обычно наиболее стратегические или специальные среды будут защищены от нежелательного доступа (производство, подготовка и т. Д.), Поэтому ваши секретные ценности будут недоступны.

Один db_password = process.env.DB_PASS будет многократно использоваться для любой существующей и будущей среды, которую вы или ваша команда создадите.

Это простой, но эффективный подход, но требует минимального контроля над вашей средой и хостами.

0 голосов
/ 27 октября 2018
  • Переменные среды - это наиболее распространенный способ настройки поведения программы для всех языков программирования.Он также поддерживается "из коробки" в большинстве инструментов CI / CD, а также очень хорошо работает с командной строкой.

  • В вашем примере вы предполагаете, что полная конфигурациясреда prd будет сохранена в конфигурации, включая пароль базы данных и т. д. Не считается безопасным хранить какие-либо секреты в исходном коде.

  • Файл .env является распространеннымутилита для объединения переменных среды.Создать файл .gitignore с таким шаблоном действительно просто, что предотвращает его фиксацию, поэтому конфигурация остается локальной.Обратите внимание, что потребитель пакета не должен использовать файл .env, но также может иметь переменные глобальной / локальной среды, в которых запускается скрипт.Разработка прочная и не очень подвержена ошибкам.

  • Синтаксическая простота.вместо создания специального файла исходного кода, содержащего конфигурацию, с более сложным синтаксисом, чем key=value, и менее распространенным для понимания.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...