mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
05aaba9514
Summary: Pull Request resolved: https://github.com/facebook/react-native/pull/33864 This Diff aligns the way in which iOS and Android codegen the modules and components. Android takes all the JS in the project root folder and creates components starting from there. iOS used to required to specify a specific path for each component, within a JSON field called `libraries`. This Diff let iOS work in the same way as android does **Backward compatibility:** This diff still support the old way for iOS, but we are deprecating it. ## Changelog [iOS][Added] - Support codegen from a single folder Reviewed By: cortinico Differential Revision: D36473005 fbshipit-source-id: 1e8cf0f9764f529c02e948984c74d1982a84030b
133 lines
2.8 KiB
JavaScript
133 lines
2.8 KiB
JavaScript
/**
|
|
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
*
|
|
* This source code is licensed under the MIT license found in the
|
|
* LICENSE file in the root directory of this source tree.
|
|
*
|
|
* @emails oncall+react_native
|
|
* @format
|
|
*/
|
|
|
|
'use-strict';
|
|
|
|
const SINGLE_LIBRARY_CODEGEN_CONFIG = {
|
|
codegenConfig: {
|
|
libraries: [
|
|
{
|
|
name: 'react-native',
|
|
type: 'all',
|
|
jsSrcsDir: '.',
|
|
},
|
|
],
|
|
},
|
|
};
|
|
|
|
const MULTIPLE_LIBRARIES_CODEGEN_CONFIG = {
|
|
codegenConfig: {
|
|
libraries: [
|
|
{
|
|
name: 'react-native',
|
|
type: 'all',
|
|
jsSrcsDir: '.',
|
|
},
|
|
{
|
|
name: 'my-component',
|
|
type: 'components',
|
|
jsSrcsDir: 'component/js',
|
|
},
|
|
{
|
|
name: 'my-module',
|
|
type: 'module',
|
|
jsSrcsDir: 'module/js',
|
|
},
|
|
],
|
|
},
|
|
};
|
|
|
|
const NO_LIBRARIES_CONFIG_FILE = {
|
|
codegenConfig: {
|
|
name: 'AppModules',
|
|
type: 'all',
|
|
jsSrcsDir: '.',
|
|
},
|
|
};
|
|
|
|
const SCHEMA_TEXT = `
|
|
{
|
|
"modules": {
|
|
"ColoredView": {
|
|
"type": "Component",
|
|
"components": {
|
|
"ColoredView": {
|
|
"extendsProps": [
|
|
{
|
|
"type": "ReactNativeBuiltInType",
|
|
"knownTypeName": "ReactNativeCoreViewProps"
|
|
}
|
|
],
|
|
"events": [],
|
|
"props": [
|
|
{
|
|
"name": "color",
|
|
"optional": false,
|
|
"typeAnnotation": {
|
|
"type": "StringTypeAnnotation",
|
|
"default": null
|
|
}
|
|
}
|
|
],
|
|
"commands": []
|
|
}
|
|
}
|
|
},
|
|
"NativeCalculator": {
|
|
"type": "NativeModule",
|
|
"aliases": {},
|
|
"spec": {
|
|
"properties": [
|
|
{
|
|
"name": "add",
|
|
"optional": false,
|
|
"typeAnnotation": {
|
|
"type": "FunctionTypeAnnotation",
|
|
"returnTypeAnnotation": {
|
|
"type": "PromiseTypeAnnotation"
|
|
},
|
|
"params": [
|
|
{
|
|
"name": "a",
|
|
"optional": false,
|
|
"typeAnnotation": {
|
|
"type": "NumberTypeAnnotation"
|
|
}
|
|
},
|
|
{
|
|
"name": "b",
|
|
"optional": false,
|
|
"typeAnnotation": {
|
|
"type": "NumberTypeAnnotation"
|
|
}
|
|
}
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
"moduleNames": [
|
|
"Calculator"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
`;
|
|
|
|
const SCHEMA = JSON.parse(SCHEMA_TEXT);
|
|
|
|
module.exports = {
|
|
schemaText: SCHEMA_TEXT,
|
|
schema: SCHEMA,
|
|
noLibrariesConfigFile: NO_LIBRARIES_CONFIG_FILE,
|
|
singleLibraryCodegenConfig: SINGLE_LIBRARY_CODEGEN_CONFIG,
|
|
multipleLibrariesCodegenConfig: MULTIPLE_LIBRARIES_CODEGEN_CONFIG,
|
|
};
|