Переключение между dev и режимом производства - PullRequest
3 голосов
/ 11 апреля 2020

Мне бы хотелось иметь возможность переключаться между конечными точками производства и разработки в пределах настроек телефона. Я беспокоюсь, что это может испортить ca sh и может отображать неверные данные. Каков наилучший способ сделать это, пожалуйста?

picture

1 Ответ

0 голосов
/ 12 апреля 2020

Мне было интересно то же самое!

  1. В вашем коде вы можете использовать глобальный флаг __DEV__, чтобы различать Dev и Production "mode".

  2. Переключатель производства 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"

Настоящая оговорка - это когда вы хотите запустить свое приложение в производственной среде. Вам необходимо:

  1. Скопировать .env-production содержимое в файл .env.
  2. Перезапустить Metro Bundler Expo Expo и очистить его кэш (необходимо всегда перезапускать между .env изменениями) , Сделайте это, запустив expo r -c или нажав shift-r в своем терминале, чтобы перезапустить и очистить кэш, когда Metro Bundler работает.

Это самый оптимальный подход, который мне удалось найти .

PS: Если вы хотите переключаться между конечными точками Dev и Production в вашем приложении - я просто использовал бы файл js с экспортированными переменными для каждой среды.

...