Как переменные среды используются с Gatsby?

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

Конкретно:

  • Читает ли Gatsby автоматически файл .env.development при выполнении gatsby develop?
  • Точно так же игнорирует ли он файл .env.development и читает только .env.production при выполнении gatsby build?
  • Вы должны добавить .env.development и .env.production к .gitignore?
  • Вы должны вручную копировать (например, через scp) файлы .env.* на свои серверы?
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
3
0
2 657
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Я использовал файлы .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.production) в пакет во время сборки и, следовательно, фактически не требуется на сервере хостинга?

skube 28.07.2018 15:13

Да, это правильно. Я проверил это, добавив два файла .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 в статические файлы

Sarah 30.07.2018 19:57

Кроме того, вы должны загрузить свою папку / public на сервер, ваши файлы .env должны находиться в корневом каталоге вашего проекта. Так что они не дойдут до сервера.

Sarah 30.07.2018 20:26

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