Как заставить скрипт npm построить правильную среду?

Я создаю реактивный проект и переключаюсь между промежуточной и производственной средами с использованием библиотеки react-native-config. Мои среды определены в отдельных файлах .env (.env.dev, .env.staging, .env.prod), и у меня есть следующие сценарии npm, определенные в моем package.json

"scripts": {
    "android-dev": "ENVFILE=.env.dev react-native run-android",
    "android-staging": "ENVFILE=.env.staging react-native run-android",
    "android-prod": "ENVFILE=.env.prod react-native run-android",
    "android-release": "react-native run-android --variant=release",
    "build-android-staging": "export ENVFILE=.env.staging && cd android && ./gradlew assembleRelease && cd ..",
    "build-android-prod": "export ENVFILE=.env.prod && cd android && ./gradlew assembleRelease && cd .."
  }

В моем build.gradle я разместил следующее

project.ext.envConfigFiles = [
  debug: ".env.staging",
  release: ".env.prod",
  anycustombuildlowercase: ".env.staging",
]

Я думаю, что существует конфликт между сценариями и кодом build.gradle, потому что когда я запускаю npm run build-android-staging, он создает выпуск в производственной среде. Если я удаляю код в build.gradle и вызываю API, я получаю ошибку Fatal Exception: java.lang.IllegalArgumentException unexpected url: undefinedapi/. Что мне нужно изменить, чтобы мои сценарии сборки могли работать с правильными средами?


person wizloc    schedule 26.09.2017    source источник


Ответы (1)


После долгих исследований я наконец наткнулся на эту проблему эту проблему где кто-то изложил, как именно это сделать. В build.gradle мне пришлось добавить

project.ext.envConfigFiles = [
  debug: ".env.staging",
  release: ".env.prod",
  releaseStaging: ".env.staging", <---- THIS LINE
  anycustombuildlowercase: ".env.staging",
]

И в том же файле build.gradle добавьте

releaseStaging {
          minifyEnabled enableProguardInReleaseBuilds
          useProguard enableProguardInReleaseBuilds
        }

в разделе Типы сборки. Затем в package.json я создал этот скрипт узла

"android-release-staging": "react-native run-android --variant=releaseStaging".

Теперь я могу, наконец, создать производственную сборку с использованием промежуточной стадии.

person wizloc    schedule 08.11.2017