2017-09-26 6 views
1

私は反応ネイティブプロジェクトを構築しており、react-native-configライブラリを使用してステージング環境と本番環境を切り替えています。私は、私の環境では、個別の.envファイル(.env.dev、.env.prod、.env.staging)で定義されている、と私は、次のNPMのスクリプトは私のビルドでは私のpackage.jsonnpmスクリプトを正しい環境に構築するには?

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

で定義されています.gradle私はnpm run build-android-stagingを実行すると、それは本番環境でのリリースを構築するため、競合は、スクリプトやbuild.gradleのコードの間であると思い、次の

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

を配置しています。 build.gradleでコードを削除してapiを呼び出すと、Fatal Exception: java.lang.IllegalArgumentException unexpected url: undefinedapi/エラーが表示されます。ビルドスクリプトが正しい環境で動作するためには、何を変更する必要がありますか?

答えて

0

私はついにこの問題に遭遇しましたthis issue誰かが正確にこれを行う方法を説明しました。 build.gradleでは、私はbuildTypes下

releaseStaging { 
      minifyEnabled enableProguardInReleaseBuilds 
      useProguard enableProguardInReleaseBuilds 
     } 

を追加し、

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

と同じbuild.gradleファイルにを追加する必要がありました。次に、package.jsonでこのノードスクリプトを作成しました。

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

最終的にステージングを使用してプロダクションビルドを作成できます。

関連する問題