如何使npm脚本build立正确的环境?

我正在构build一个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 .." } 

在我的build.gradle中,我放置了以下内容

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

我认为脚本和build.gradle代码之间存在冲突,因为当我运行npm run build-android-staging它会在生产环境中构build版本。 如果我删除build.gradle中的代码并调用一个API,我收到Fatal Exception: java.lang.IllegalArgumentException unexpected url: undefinedapi/错误。 我需要改变什么以允许我的构build脚本在正确的环境中工作?

经过很长时间的研究,我终于在这个问题上find了这个问题 ,在这个问题上有人提出了如何做到这一点。 在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中创build了这个节点脚本

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

现在我终于可以使用分段创build一个生产版本。