mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
Break Circular Dependency between React-Codegen and React-Fabric (#36210)
Summary: Pull Request resolved: https://github.com/facebook/react-native/pull/36210 One of the circular dependencies we have in OSS was between React-Codegen and React-Fabric. React-Codegen generates component which has to depends on React-Fabric because they need to use the files contained in the `react/renderer/view` folder. React-Fabric contains some components that depends on RNCore, which was generated inside the React-Codegen folder. This change generates the RNCore components inside the `ReactCommon/react/renderer/components/rncore` folder, breaking the dependency as `rncore` folder is now contained by React-Fabric itself. **Fun Fact:** That's how it always should have been. There was already a line in the `.gitignore` to exclude the content of `ReactCommon/react/renderer/components/rncore` folder. I guess that with some of the refactoring/previous projects on Codegen, this requirements has slipped. ## Changelog: [iOS][Breaking] - generates RNCore components inside the ReactCommon folder and create a new pod for platform-specific ImageManager classes Reviewed By: sammy-SC, dmytrorykun Differential Revision: D43304641 fbshipit-source-id: ebb5033ce73dbcd03f880c3e204511fdce04b816
This commit is contained in:
committed by
Facebook GitHub Bot
parent
6d34952420
commit
5d175c6775
@@ -25,13 +25,16 @@ const RN_ROOT = path.join(__dirname, '../..');
|
||||
const CODEGEN_DEPENDENCY_NAME = '@react-native/codegen';
|
||||
const CODEGEN_REPO_PATH = `${RN_ROOT}/packages/react-native-codegen`;
|
||||
const CODEGEN_NPM_PATH = `${RN_ROOT}/../${CODEGEN_DEPENDENCY_NAME}`;
|
||||
const CORE_LIBRARIES = new Set(['rncore', 'FBReactNativeSpec']);
|
||||
const CORE_LIBRARIES_WITH_OUTPUT_FOLDER = {
|
||||
rncore: path.join(RN_ROOT, 'ReactCommon'),
|
||||
FBReactNativeSpec: null,
|
||||
};
|
||||
const REACT_NATIVE_DEPENDENCY_NAME = 'react-native';
|
||||
|
||||
// HELPERS
|
||||
|
||||
function isReactNativeCoreLibrary(libraryName) {
|
||||
return CORE_LIBRARIES.has(libraryName);
|
||||
return libraryName in CORE_LIBRARIES_WITH_OUTPUT_FOLDER;
|
||||
}
|
||||
|
||||
function executeNodeScript(node, script) {
|
||||
@@ -273,7 +276,6 @@ function handleInAppLibraries(
|
||||
}
|
||||
|
||||
// CodeGen
|
||||
|
||||
function getCodeGenCliPath() {
|
||||
let codegenCliPath;
|
||||
if (fs.existsSync(CODEGEN_REPO_PATH)) {
|
||||
@@ -345,8 +347,10 @@ function generateCode(iosOutputDir, library, tmpDir, node, pathToSchema) {
|
||||
);
|
||||
|
||||
// Finally, copy artifacts to the final output directory.
|
||||
fs.mkdirSync(iosOutputDir, {recursive: true});
|
||||
execSync(`cp -R ${tmpOutputDir}/* ${iosOutputDir}`);
|
||||
const outputDir =
|
||||
CORE_LIBRARIES_WITH_OUTPUT_FOLDER[library.config.name] ?? iosOutputDir;
|
||||
fs.mkdirSync(outputDir, {recursive: true});
|
||||
execSync(`cp -R ${tmpOutputDir}/* ${outputDir}`);
|
||||
console.log(`[Codegen] Generated artifacts: ${iosOutputDir}`);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user