加速 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 添加自定义配置,指示应用程序正确安装传递依赖项。要实现这一点,
- 如果您还没有,请创建一个名为
react-native.config.js
的新文件。 - 当标志打开时,从
dependency
中显式排除传递依赖项。
例如,react-native-flipper
库是一个依赖于 Flipper 的附加库。如果您的应用程序使用它,您需要将其从依赖项中排除。您的 react-native.config.js
将如下所示:
module.exports = {
// other fields
dependency: {
...(process.env.NO_FLIPPER
? {'react-native-flipper': {platforms: {ios: null}}}
: {}),
},
};