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

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

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

Так, когда я должен использовать .env и когда я должен использовать config.json?

18
PatrykB 20 Авг 2018 в 22:31

5 ответов

Лучший ответ

Вопрос

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

Ответ

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

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

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

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

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

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

13
Derek Pollard 20 Авг 2018 в 19:44

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

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

enter image description here

3
TheDarkIn1978 26 Авг 2019 в 01:17

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

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

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

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

4
John Ellmore 20 Авг 2018 в 19:39

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

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

3
duxfox-- 20 Авг 2018 в 19:42

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

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

4
derelict 20 Авг 2018 в 19:40
51937363