Как предполагается использовать переменные среды в контексте GatsbyJS? Я прочитал и перечитал официальные документы, но все еще не понимаю.
Конкретно:
.env.development при выполнении gatsby develop?.env.development и читает только .env.production при выполнении gatsby build?.env.development и .env.production к .gitignore?scp) файлы .env.* на свои серверы?




Я использовал файлы .env.development и .env.production, но dotenv мне не понадобился, потому что я не пытался перенести эти переменные env в node.js. Мне нужны эти переменные среды в файлах JS.
Q1) Да. Если вы создаете файл .env.development в корневом каталоге, добавьте эту одну строку кода IMG_URL=https://picsum.photos/200/300?image=1079, а затем в свой JS добавьте эту строку кода <img src = {'${process.env.IMG_URL}'} alt = "" /> в функцию render(){} в одном из ваших компонентов реакции. Затем gatsby develop, вы увидите изображение
Q2) Да, похоже. Я создал файлы .env.development и .env.production, определил переменную в разрабатываемой, а затем развернул в производственной среде. Переменная env не была определена в файле .env.production.
Q3) хм, это, вероятно, зависит от вашего репо. Если это публичный или приватный. А также содержимое файла. Если вы используете файлы .env для URL-адресов API и т. д., Это нормально, но секреты не должны быть в файлах .env или репозитории.
4 квартал) Я бы сказал, что фиксация и развертывание в целом разные. Если у вас нет настройки с автоматическим развертыванием при фиксации. Я добавил свои файлы в свой .gitignore, а затем скопировал все мои локальные файлы на свой рабочий сервер. Может быть, у кого-то есть лучший ответ на этот вопрос.
Возможно, этот подход может быть лучше для вас альтернативная конфигурация перейдите к комментарию oliverbenns
Да, это правильно. Я проверил это, добавив два файла .env. .env.development имел следующее содержимое IMG_URL=https://picsum.photos/200/300?image=1080.env.production имел следующее содержимое IMG_URL=https://picsum.photos/200/300?image=1079 После gatsby build при поиске в папке / public я заметил, что он встроил URL-адрес .env.production в статические файлы
Кроме того, вы должны загрузить свою папку / public на сервер, ваши файлы .env должны находиться в корневом каталоге вашего проекта. Так что они не дойдут до сервера.
Считывается ли содержимое файлов (например,
.env.production) в пакет во время сборки и, следовательно, фактически не требуется на сервере хостинга?