加速 CI 建置
您或您的公司可能已設定持續整合 (CI) 環境來測試您的 React Native 應用程式。
快速的 CI 服務很重要,原因有 2 個
- CI 機器執行時間越長,成本就越高。
- CI 工作執行時間越長,開發循環就越長。
因此,重要的是嘗試減少 CI 環境建置 React Native 所花費的時間。
停用 iOS 的 Flipper
Flipper 是 React Native 預設附帶的偵錯工具,用於協助開發人員偵錯和剖析他們的 React Native 應用程式。但是,CI 中不需要 Flipper:您或您的同事不太可能需要偵錯在 CI 環境中建置的應用程式。
對於 iOS 應用程式,每次建置 React Native 架構時都會建置 Flipper,而且建置可能需要一些時間,而這正是您可以節省的時間。
從 React Native 0.71 開始,我們在範本的 Podfile 中加入一個新的旗標:NO_FLIPPER
旗標。
預設情況下,未設定 NO_FLIPPER
旗標,因此 Flipper 會預設包含在您的應用程式中。
安裝 iOS pod 時,你可以指定 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 pod 的函式庫。如果是這樣,使用 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}}}
: {}),
},
};