2017-09-26 22 views
1

我正在構建一個react-native項目,並使用react-native-config庫在登臺和生產環境之間切換。我已經在不同的.ENV文件(.env.dev,.env.staging,.env.prod)定義我的環境,我已經在我的package.json如何讓npm腳本構建正確的環境?

"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 .." 
    } 

定義如下NPM腳本在我的構建.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/錯誤。我需要修改哪些內容才能使我的構建腳本能夠在正確的環境中工作?

回答

0

經過了很長時間的研究,我終於遇到了這個問題this issue,其中有人擺出如何做到這一點。在的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 
     } 

下buildTypes。然後在的package.json我創造了這個節點腳本

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

現在,我終於可以創建使用分段生產版本。

相關問題