跳至主要内容

加速 CI 构建

您或您的公司可能已经设置了持续集成 (CI) 环境来测试您的 React Native 应用程序。

快速的 CI 服务有两个重要原因

  • CI 机器运行时间越长,成本越高。
  • CI 作业运行时间越长,开发循环就越长。

因此,重要的是尽量减少 CI 环境构建 React Native 所花费的时间。

为 iOS 禁用 Flipper

Flipper 是 React Native 默认提供的调试工具,可帮助开发人员调试和分析他们的 React Native 应用程序。但是,Flipper 在 CI 中不是必需的:您或您的同事不太可能需要调试在 CI 环境中构建的应用程序。

对于 iOS 应用程序,每次构建 React Native 框架时都会构建 Flipper,并且可能需要一些时间才能构建,而这是您可以节省的时间。

从 React Native 0.71 版本开始,我们在模板的 Podfile 中引入了一个新的标志:NO_FLIPPER 标志

默认情况下,NO_FLIPPER 标志未设置,因此 Flipper 会默认包含在您的应用程序中。

您可以在安装 iOS Pods 时指定 NO_FLIPPER=1,指示 React Native 不要安装 Flipper。通常,命令如下所示:

# from the root folder of the react native project
NO_FLIPPER=1 bundle exec pod install --project-directory=ios

在您的 CI 环境中添加此命令,以跳过安装 Flipper 依赖项,从而节省时间和成本。

处理传递依赖

您的应用程序可能使用了一些依赖于 Flipper Pods 的库。如果是这种情况,使用 NO_FLIPPER 标志禁用 Flipper 可能还不够:您的应用程序在这种情况下可能无法构建。

处理这种情况的正确方法是为 React Native 添加自定义配置,指示应用程序正确安装传递依赖项。要实现这一点,

  1. 如果您还没有,请创建一个名为 react-native.config.js 的新文件。
  2. 当标志打开时,从 dependency 中显式排除传递依赖项。

例如,react-native-flipper 库是一个依赖于 Flipper 的附加库。如果您的应用程序使用它,您需要将其从依赖项中排除。您的 react-native.config.js 将如下所示:

react-native.config.js
module.exports = {
// other fields
dependency: {
...(process.env.NO_FLIPPER
? {'react-native-flipper': {platforms: {ios: null}}}
: {}),
},
};