在开发模式和生产模式之间切换

时间:2020-04-11 02:34:02

标签: javascript reactjs react-native expo

我希望有一种方法可以在电话设置中在生产和开发端点之间进行切换。我担心这会浪费现金并可能显示不正确的数据。请问最好的方法是什么?

picture

1 个答案:

答案 0 :(得分:0)

我在想同样的事情!

  1. 在代码中,您可以使用__DEV__全局标志来区分开发和生产“模式”。

  2. Expo的Production开关不是处理环境开关(在您的情况下为Production和dev端点)的可靠方法。为什么? 2个主要原因:

    • 生产模式始终最小化代码,并更好地表示您的应用在最终用户设备上的性能。
    • 开发模式包括有用的警告,并允许您访问调试工具

如果您想灵活地针对拥有的生产端点运行应用程序,但仍然能够访问调试工具,该怎么办?你不能。

这是我的方法:我使用.env个文件来处理环境切换。

有了Expo,我有了.env可以进行以下工作:

  • 将babel-plugin-inline-dotenv添加到devDependencies:

    npm install --save-dev babel-plugin-inline-dotenv
    
  • inline-dotenv添加到了.babelrc:

    {
      "plugins": ["inline-dotenv"]
    }
    
  • 添加了一个.env文件:

    ENDPOINT="https://development"
    

.env设置说明的荣誉转到jdrydn

最后,在代码中使用环境变量:

<Text>{process.env.ENDPOINT}</Text>

另外,我还有一个文件.env-production(从技术上来说,如果您想知道的话,我也有.env-staging):

ENDPOINT="https://production"

真正的警告是当您要在生产环境中运行应用程序时。您需要:

  1. .env-production内容复制到.env文件中。
  2. 重新启动Expo的Metro Bundler并清除其缓存(必须始终在.env次更改之间重新启动)。在Metro Bundler运行时,通过运行expo r -c或在终端中按shift-r重新启动并清除缓存,即可完成此操作。

那是我找到的最理想的方法。

PS:如果要在应用程序的Dev和Production端点之间切换-我将只使用一个js文件,并为每个环境导出变量。