多环境打包(RN,Multi react-native-dotenv react-native-config)

技术点

    1. node如何使用多环境打包
    1. react-native-dotenv

参考:[react-native 设置环境变量- react-native-dotenv]

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

答疑:

  1. React-native 默认执行react-native start 或 或者react-native run-android ,都会默认加载.env.local

  2. 执行./gradlew assembleRelease 时,会默认加载 .env.production配置文件

  3. 如果不在执行脚本中增加ENVFILE的配置,那么react-native-dotenv,会在运行时,加载.env.development, 发布时默认加载.env.production

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容