.env против config.json

Я только начал изучать JavaScript / node.js (легкое введение в back-end webdev), и поэтому я полностью придерживаюсь этой темы.

Несколько дней назад я читал руководство, из которого я научился хранить свои конфиденциальные данные (например, пароли) в файле config.json.

Сегодня я обнаружил (случайно) файл .env, и чем больше я узнаю о нем, тем больше людей используют его для хранения паролей.

Итак, когда мне следует использовать .env, а когда - config.json?

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
31
0
17 698
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

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

Некоторые примеры форматов файлов конфигурации:

  • .env
  • *.yml (файлы YAML)
  • *.ini (обычно только для Windows)
  • *.json

В конце концов, все они выполняют одну и ту же цель: предоставляют вашему приложению информацию, относящуюся к среде (учетные данные, пути к файлам, строки подключения и т. д.). Выберите формат, который лучше всего соответствует вашему выбору фреймворка.

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

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

Я думаю, это действительно зависит от вас, важно помнить, почему вы используете этот подход. Идея состоит в том, чтобы сохранить ваши конфиденциальные данные в файле, который не будет передан в систему управления версиями или в любое другое место, кроме вашей локальной среды - это обеспечивает безопасность данных. Затем, когда вы будете готовы к развертыванию на удаленном сервере, вам необходимо вручную вставить эти значения в эту среду.

Обычно я использую .env, потому что синтаксис для получения данных из файла .env поддерживается во многих удаленных средах, таких как heroku. Когда я развертываю приложение на heroku, я могу зайти в настройки приложения и ввести переменные среды с помощью пользовательского интерфейса панели управления heroku - мне не нужно выяснять, как создать файл json вручную и т. д. (возможно, есть другие обходные пути). После того, как переменные установлены, я просто использую process.env.variableName для доступа к данным.

Ответ принят как подходящий

Вопрос

Когда следует использовать .env вместо config.json и для чего?

Ответ

Это довольно сложный ответ. С одной стороны, вам следует использовать любой из этих инструментов только во время разработки. Это означает, что в производственной или производственной среде вы должны добавить эти переменные непосредственно в среду:

NODE_ENV=development node ./sample.js --mongodb:host "dharma.mongohq.com" --mongodb:port 10065

По сути, нет явного победителя над другим, поскольку они оба полезны по-разному. Вы можете иметь вложенные данные с config.json, но, с другой стороны, вы также можете иметь более чистую структуру данных с .env.

Также следует отметить, что вы никогда не хотите передавать эти файлы в систему управления версиями (git, svc и т. д.).

С другой стороны, эти инструменты позволяют новичкам быстро приступить к работе, не беспокоясь о том, как установить переменные среды и различия между средой Windows и средой Linux.

В общем, я бы сказал, что все зависит от разработчика.

Статистическое сравнение двух пакетов NPM (наряду с другими подобными решениями) может быть лучшим способом решить для себя.

На момент написания этой статьи dotenv - это гораздо меньший пакет с большей поддержкой (не считая фактических участников, только исходя из количества оставшихся проблем и огромной популярности). Он также новее на 2,5 года и, если фанфары важны для вас, в нем вдвое больше звезд.

большинство людей не используют пакет конфигурации, а просто загружают его в каталог с помощью require или fs с анализом json

Harry Kruger 27.03.2021 11:46

Другие вопросы по теме