技术点
- node如何使用多环境打包
- react-native-dotenv
参考:[react-native 设置环境变量- react-native-dotenv]
- 多渠道打包 android:https://juejin.cn/post/6844904098496512014
- react-native-config 参考:https://github.com/lugg/react-native-config
react-native-config可以用于原生使用并调用环境变量,react-native-dotenv进行react native 的环境变量配置
1. 安装依赖
pnpm i react-native-dotenv --save-dev
pnpm i react-native-config --save-dev
2. 配置android/app/build.gradle ,
注意这段代码的顺序,先加载react-native-config的配置文件,再通过doenv.gradle编译
project.ext.envConfigFiles = [
debug: ".env.development",
release: ".env.production",
releaseTest: ".env.development",
anothercustombuild: ".env.development",
]
apply from: project(':react-native-config').projectDir.getPath() + "/dotenv.gradle"
/** 代码布拉布拉 */
android {
// 省略
defaultConfig {
// 这个很重要,要不然找不到配置的环境变量
resValue "string", "build_config_package", "com.joeyzh.rn.demo"
}
3. 在根目录增加.env.production和.env.development 文件
NODE_ENV=development
REACT_APP_BASE_URL=https://xxxx
NODE_ENV=production
REACT_APP_BASE_URL=https://xxxxx
4. 配置babel.config.js环境变量
module.exports = {
presets: ['module:@react-native/babel-preset'],
plugins: [
[
'module:react-native-dotenv',
{
envName: 'ENVFILE',
moduleName: '@env',
path: process.env.ENVFILE || '.env',
},
],
}
5. 添加package.json编译脚本(很关键, 注意看ENVFILE的配置)
"scripts": {
"android": "react-native run-android",
"android:prod": "ENVFILE=.env.production react-native run-android",
"build-android:dev": "cd ./android && ENVFILE=.env.development ./gradlew assembleRelease",
"build-android": "cd ./android && ./gradlew assembleRelease",
}
答疑:
React-native 默认执行react-native start 或 或者react-native run-android ,都会默认加载.env.local
执行./gradlew assembleRelease 时,会默认加载 .env.production配置文件
如果不在执行脚本中增加ENVFILE的配置,那么react-native-dotenv,会在运行时,加载.env.development, 发布时默认加载.env.production