Мне было интересно то же самое!
В вашем коде вы можете использовать глобальный флаг __DEV__
, чтобы различать Dev и Production "mode".
Переключатель производства Expo не является надежным способом управления переключателями среды (конечные точки производства и разработки в вашем случае). Почему? 2 основные причины:
- Режим производства всегда минимизирует ваш код и лучше отражает производительность, которую ваше приложение будет иметь на устройствах конечного пользователя.
- Режим разработки содержит полезные предупреждения и дает вам доступ к инструментам отладки .
Что делать, если вы хотите иметь гибкость для запуска приложения на ваших конечных точках производства, но все еще в состоянии получить доступ к инструментам отладки? Вы не можете.
Вот мой подход: я работаю с переключателями окружения с помощью .env
файлов.
С Expo я получил .env
для работы со следующими:
Добавлен babel-plugin-inline-dotenv в devDependencies:
npm install --save-dev babel-plugin-inline-dotenv
Добавлен inline-dotenv
в .babelr c:
{
"plugins": ["inline-dotenv"]
}
Добавлен файл .env
:
ENDPOINT="https://development"
Престижность для инструкций по настройке .env
переходит к jdrydn .
Наконец, используйте переменную окружения в вашем коде:
<Text>{process.env.ENDPOINT}</Text>
Плюс, у меня есть еще один файл .env-production
(технически, у меня также есть .env-staging
на тот случай, если вам интересно):
ENDPOINT="https://production"
Настоящая оговорка - это когда вы хотите запустить свое приложение в производственной среде. Вам необходимо:
- Скопировать
.env-production
содержимое в файл .env
. - Перезапустить Metro Bundler Expo Expo и очистить его кэш (необходимо всегда перезапускать между
.env
изменениями) , Сделайте это, запустив expo r -c
или нажав shift-r
в своем терминале, чтобы перезапустить и очистить кэш, когда Metro Bundler работает.
Это самый оптимальный подход, который мне удалось найти .
PS: Если вы хотите переключаться между конечными точками Dev и Production в вашем приложении - я просто использовал бы файл js с экспортированными переменными для каждой среды.