如何使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一个生产版本。