mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
d03c0f965e
Summary: Move FBReactNativeSpec codegen invocation to shared `react_native_pods.rb` script and trigger codegen to run as part of `pod install` in both RNTester as well as React Native for iOS projects. These files need to be generated before CocoaPods generates the Pods project, so the codegen is invoked as part of a `pre_install` hook during `pod install`. The codegen hook can now take optional paths to allow it to run within different contexts (as part of a `react-native` repo checkout with access to the codegen source, or as part of a React Native iOS project that depends on the `react-native-codegen` npm package). ## Motivation The FBReactNativeSpec ObjC++ source files (FBReactNativeSpec.h and FBReactNativeSpec-generated.mm) can be generated on demand from the native module specs in `Libraries/` using `react-native-codegen`. They can therefore be removed from the repository, but before we do so, we must ensure they get generated when a React Native iOS workspace is created or updated. Invoking the codegen as part of the `pod install` step that creates a React Native iOS Xcode workspace ensures the specs are available in the following scenarios: * Whenever a new React Native iOS project is created. The `react-native init` command invokes `pod install`. * Whenever a React Native iOS project is upgraded. The `react-native upgrade` command invokes `pod install` as well. * For contributors to the open source project running the RNTester application, the codegen will be invoked when the RNTester workspace is generated by CocoaPods using `pod install` in `packages/rn-tester`. In any other case, the codegen can still be invoked directly via `scripts/generate-native-modules-specs.sh`. > **Note:** > The codegen will only process native modules in React Native's own Libraries directory. Changelog: [iOS][Changed] - Generate FBReactNativeSpec ObjC++ source files using CocoaPods. Reviewed By: fkgozali Differential Revision: D24348111 fbshipit-source-id: d62ae5c6f8ce6358bf96a2801c3cdb3d94dd868d