mirror of
https://github.com/zebrajr/react.git
synced 2025-12-06 12:20:20 +01:00
* Split ReactNativeFiber into separate ReactNativeFiberRenderer module Hopefully this is sufficient to work around Rollup circular dependency problems. (To be seen in subsequent commits...) * Split findNodeHandle into findNodeHandleFiber + findNodeHandleStack This allowed me to remove the ReactNative -> findNodeHandle injections, which should in turn allow me to require a fully-functional findNodeHandle without going through ReactNative. This will hopefully allow ReactNativeBaseomponent to avoid a circular dependency. * Un-forked findNodeHandle in favor of just inlining the findNode function impl * takeSnapshot no longer requires/depends-on ReactNative for findNodeHandle Instead it uses the new, renderer-specific wrappers (eg findNodeHandleFiberWrapper and findNodeHandleStackWrapper) to ensure the returned value is numeric (or null). This avoids a circular dependency that would trip up Rollup. * NativeMethodsMixin requires findNodeHandler wrapper(s) directly rather than ReactNative This works around a potential circular dependency that would break the Rollup build * Add RN_* build targets to hash-finle-name check * Strip @providesModule annotations from headers for RN_* builds * Added process.env.REACT_NATIVE_USE_FIBER to ReactNativeFeatureFlags This is kind of a hacky solution, but it is temporary. It works around the fact that ReactNativeFeatureFlag values need to be set at build time in order to avoid a mismatch between runtime flag values. DOM avoids the need to do this by using injection but Native is not able to use this same approach due to circular dependency issues. * Moved a couple of SECRET exports to dev-only. Removed SyntheticEvent and PooledClass from SECRET exports. Converted Rollup helper function to use named params. * Split NativeMethodsMixins interface and object-type * Add @noflow header to flat-bundle template to avoid triggering Flow problems When Flow tries to infer such a large file, it consumes massive amounts of CPU/RAM and can often lead to programs crashing. It is better for such large files to use .flow.js types instead. * NativeMethodsMixin and ReactNativeFiberHostComponent now share the same Flow type * Collocated (externally exposed) ReactTypes and ReactNativeTypes into single files to be synced to fbsource. ReactNativeFiber and ReactNativeStack use ReactNativeType Flow type * Build script syncs RN types and PooledClass automatically * Added optional sync-RN step to Rollup build script * Added results.json for new RN bundles
464 lines
12 KiB
JavaScript
464 lines
12 KiB
JavaScript
'use strict';
|
|
|
|
const devExpressionWithCodes = require('../error-codes/dev-expression-with-codes');
|
|
|
|
const bundleTypes = {
|
|
UMD_DEV: 'UMD_DEV',
|
|
UMD_PROD: 'UMD_PROD',
|
|
NODE_DEV: 'NODE_DEV',
|
|
NODE_PROD: 'NODE_PROD',
|
|
FB_DEV: 'FB_DEV',
|
|
FB_PROD: 'FB_PROD',
|
|
RN_DEV: 'RN_DEV',
|
|
RN_PROD: 'RN_PROD',
|
|
};
|
|
|
|
const UMD_DEV = bundleTypes.UMD_DEV;
|
|
const UMD_PROD = bundleTypes.UMD_PROD;
|
|
const NODE_DEV = bundleTypes.NODE_DEV;
|
|
const NODE_PROD = bundleTypes.NODE_PROD;
|
|
const FB_DEV = bundleTypes.FB_DEV;
|
|
const FB_PROD = bundleTypes.FB_PROD;
|
|
const RN_DEV = bundleTypes.RN_DEV;
|
|
const RN_PROD = bundleTypes.RN_PROD;
|
|
|
|
const babelOptsReact = {
|
|
exclude: 'node_modules/**',
|
|
plugins: [
|
|
devExpressionWithCodes, // this pass has to run before `rewrite-modules`
|
|
],
|
|
};
|
|
|
|
const babelOptsReactART = Object.assign({}, babelOptsReact, {
|
|
// Include JSX
|
|
presets: [require.resolve('babel-preset-react')],
|
|
});
|
|
|
|
const bundles = [
|
|
/******* Isomorphic *******/
|
|
{
|
|
babelOpts: babelOptsReact,
|
|
bundleTypes: [UMD_DEV, UMD_PROD, NODE_DEV, NODE_PROD, FB_DEV, FB_PROD],
|
|
config: {
|
|
destDir: 'build/',
|
|
moduleName: 'React',
|
|
sourceMap: false,
|
|
},
|
|
entry: 'src/isomorphic/React.js',
|
|
externals: [
|
|
'create-react-class/factory',
|
|
'prop-types',
|
|
'prop-types/checkPropTypes',
|
|
],
|
|
fbEntry: 'src/fb/ReactFBEntry.js',
|
|
hasteName: 'React',
|
|
isRenderer: false,
|
|
label: 'core',
|
|
manglePropertiesOnProd: false,
|
|
name: 'react',
|
|
paths: [
|
|
'src/isomorphic/**/*.js',
|
|
'src/addons/**/*.js',
|
|
|
|
'src/ReactVersion.js',
|
|
'src/shared/**/*.js',
|
|
],
|
|
},
|
|
|
|
/******* React DOM *******/
|
|
{
|
|
babelOpts: babelOptsReact,
|
|
bundleTypes: [FB_DEV, FB_PROD],
|
|
config: {
|
|
destDir: 'build/',
|
|
globals: {
|
|
react: 'React',
|
|
},
|
|
moduleName: 'ReactDOM',
|
|
sourceMap: false,
|
|
},
|
|
entry: 'src/renderers/dom/ReactDOM.js',
|
|
externals: ['prop-types', 'prop-types/checkPropTypes'],
|
|
fbEntry: 'src/fb/ReactDOMFBEntry.js',
|
|
hasteName: 'ReactDOMStack',
|
|
isRenderer: true,
|
|
label: 'dom-stack',
|
|
manglePropertiesOnProd: false,
|
|
name: 'react-dom-stack',
|
|
paths: [
|
|
'src/renderers/dom/**/*.js',
|
|
'src/renderers/shared/**/*.js',
|
|
|
|
'src/ReactVersion.js',
|
|
'src/shared/**/*.js',
|
|
],
|
|
},
|
|
{
|
|
babelOpts: babelOptsReact,
|
|
bundleTypes: [UMD_DEV, UMD_PROD, NODE_DEV, NODE_PROD, FB_DEV, FB_PROD],
|
|
config: {
|
|
destDir: 'build/',
|
|
globals: {
|
|
react: 'React',
|
|
},
|
|
moduleName: 'ReactDOM',
|
|
sourceMap: false,
|
|
},
|
|
entry: 'src/renderers/dom/fiber/ReactDOMFiber.js',
|
|
externals: ['prop-types', 'prop-types/checkPropTypes'],
|
|
fbEntry: 'src/fb/ReactDOMFiberFBEntry.js',
|
|
hasteName: 'ReactDOMFiber',
|
|
isRenderer: true,
|
|
label: 'dom-fiber',
|
|
manglePropertiesOnProd: false,
|
|
name: 'react-dom',
|
|
paths: [
|
|
'src/renderers/dom/**/*.js',
|
|
'src/renderers/shared/**/*.js',
|
|
|
|
'src/ReactVersion.js',
|
|
'src/shared/**/*.js',
|
|
],
|
|
},
|
|
{
|
|
babelOpts: babelOptsReact,
|
|
bundleTypes: [FB_DEV, NODE_DEV],
|
|
config: {
|
|
destDir: 'build/',
|
|
globals: {
|
|
react: 'React',
|
|
},
|
|
moduleName: 'ReactTestUtils',
|
|
sourceMap: false,
|
|
},
|
|
entry: 'src/renderers/dom/test/ReactTestUtils',
|
|
externals: [
|
|
'prop-types',
|
|
'prop-types/checkPropTypes',
|
|
'react',
|
|
'react-dom',
|
|
'react-test-renderer', // TODO (bvaughn) Remove this dependency before 16.0.0
|
|
],
|
|
fbEntry: 'src/renderers/dom/test/ReactTestUtils',
|
|
hasteName: 'ReactTestUtils',
|
|
isRenderer: true,
|
|
label: 'test-utils',
|
|
manglePropertiesOnProd: false,
|
|
name: 'react-dom/test-utils',
|
|
paths: [
|
|
'src/renderers/dom/test/**/*.js',
|
|
'src/renderers/shared/**/*.js',
|
|
'src/renderers/testing/**/*.js', // TODO (bvaughn) Remove this dependency before 16.0.0
|
|
|
|
'src/ReactVersion.js',
|
|
'src/shared/**/*.js',
|
|
],
|
|
},
|
|
|
|
/******* React DOM Server *******/
|
|
{
|
|
babelOpts: babelOptsReact,
|
|
bundleTypes: [FB_DEV, FB_PROD],
|
|
config: {
|
|
destDir: 'build/',
|
|
globals: {
|
|
react: 'React',
|
|
},
|
|
moduleName: 'ReactDOMServer',
|
|
sourceMap: false,
|
|
},
|
|
entry: 'src/renderers/dom/ReactDOMServer.js',
|
|
externals: ['prop-types', 'prop-types/checkPropTypes'],
|
|
fbEntry: 'src/renderers/dom/ReactDOMServer.js',
|
|
hasteName: 'ReactDOMServerStack',
|
|
isRenderer: true,
|
|
label: 'dom-server-stack',
|
|
manglePropertiesOnProd: false,
|
|
name: 'react-dom-stack/server',
|
|
paths: [
|
|
'src/renderers/dom/**/*.js',
|
|
'src/renderers/shared/**/*.js',
|
|
'src/ReactVersion.js',
|
|
'src/shared/**/*.js',
|
|
],
|
|
},
|
|
{
|
|
babelOpts: babelOptsReact,
|
|
bundleTypes: [UMD_DEV, UMD_PROD, NODE_DEV, NODE_PROD, FB_DEV, FB_PROD],
|
|
config: {
|
|
destDir: 'build/',
|
|
globals: {
|
|
react: 'React',
|
|
},
|
|
moduleName: 'ReactDOMServer',
|
|
sourceMap: false,
|
|
},
|
|
entry: 'src/renderers/dom/ReactDOMServerStream.js',
|
|
externals: ['prop-types', 'prop-types/checkPropTypes'],
|
|
fbEntry: 'src/renderers/dom/ReactDOMServerStream.js',
|
|
hasteName: 'ReactDOMServerStream',
|
|
isRenderer: true,
|
|
label: 'dom-server-stream',
|
|
manglePropertiesOnProd: false,
|
|
name: 'react-dom/server',
|
|
paths: [
|
|
'src/renderers/dom/**/*.js',
|
|
'src/renderers/shared/**/*.js',
|
|
'src/ReactVersion.js',
|
|
'src/shared/**/*.js',
|
|
],
|
|
},
|
|
|
|
/******* React ART *******/
|
|
{
|
|
babelOpts: babelOptsReactART,
|
|
// TODO: we merge react-art repo into this repo so the NODE_DEV and NODE_PROD
|
|
// builds sync up to the building of the package directories
|
|
bundleTypes: [FB_DEV, FB_PROD],
|
|
config: {
|
|
destDir: 'build/',
|
|
globals: {
|
|
react: 'React',
|
|
},
|
|
moduleName: 'ReactART',
|
|
sourceMap: false,
|
|
},
|
|
entry: 'src/renderers/art/ReactARTStack.js',
|
|
externals: [
|
|
'art/modes/current',
|
|
'art/modes/fast-noSideEffects',
|
|
'art/core/transform',
|
|
'prop-types/checkPropTypes',
|
|
'react-dom',
|
|
],
|
|
fbEntry: 'src/renderers/art/ReactARTStack.js',
|
|
hasteName: 'ReactARTStack',
|
|
isRenderer: true,
|
|
label: 'art-stack',
|
|
manglePropertiesOnProd: false,
|
|
name: 'react-art',
|
|
paths: [
|
|
'src/renderers/art/**/*.js',
|
|
'src/renderers/shared/**/*.js',
|
|
|
|
'src/ReactVersion.js',
|
|
'src/shared/**/*.js',
|
|
],
|
|
},
|
|
{
|
|
babelOpts: babelOptsReactART,
|
|
// TODO: we merge react-art repo into this repo so the NODE_DEV and NODE_PROD
|
|
// builds sync up to the building of the package directories
|
|
bundleTypes: [UMD_DEV, UMD_PROD, NODE_DEV, NODE_PROD, FB_DEV, FB_PROD],
|
|
config: {
|
|
destDir: 'build/',
|
|
globals: {
|
|
react: 'React',
|
|
},
|
|
moduleName: 'ReactART',
|
|
sourceMap: false,
|
|
},
|
|
entry: 'src/renderers/art/ReactARTFiber.js',
|
|
externals: [
|
|
'art/modes/current',
|
|
'art/modes/fast-noSideEffects',
|
|
'art/core/transform',
|
|
'prop-types/checkPropTypes',
|
|
'react-dom',
|
|
],
|
|
fbEntry: 'src/renderers/art/ReactARTFiber.js',
|
|
hasteName: 'ReactARTFiber',
|
|
isRenderer: true,
|
|
label: 'art-fiber',
|
|
manglePropertiesOnProd: false,
|
|
name: 'react-art',
|
|
paths: [
|
|
'src/renderers/art/**/*.js',
|
|
'src/renderers/shared/**/*.js',
|
|
|
|
'src/ReactVersion.js',
|
|
'src/shared/**/*.js',
|
|
],
|
|
},
|
|
|
|
/******* React Native *******/
|
|
{
|
|
babelOpts: babelOptsReact,
|
|
bundleTypes: [RN_DEV, RN_PROD],
|
|
config: {
|
|
destDir: 'build/',
|
|
moduleName: 'ReactNativeStack',
|
|
sourceMap: false,
|
|
},
|
|
entry: 'src/renderers/native/ReactNativeStack.js',
|
|
externals: [
|
|
'ExceptionsManager',
|
|
'InitializeCore',
|
|
'ReactNativeFeatureFlags',
|
|
'RCTEventEmitter',
|
|
'TextInputState',
|
|
'UIManager',
|
|
'View',
|
|
'deepDiffer',
|
|
'deepFreezeAndThrowOnMutationInDev',
|
|
'flattenStyle',
|
|
'prop-types/checkPropTypes',
|
|
],
|
|
hasteName: 'ReactNativeStack',
|
|
isRenderer: true,
|
|
label: 'native-stack',
|
|
manglePropertiesOnProd: false,
|
|
name: 'react-native-renderer',
|
|
paths: [
|
|
'src/renderers/native/**/*.js',
|
|
'src/renderers/shared/**/*.js',
|
|
|
|
'src/ReactVersion.js',
|
|
'src/shared/**/*.js',
|
|
],
|
|
useFiber: false,
|
|
},
|
|
{
|
|
babelOpts: babelOptsReact,
|
|
bundleTypes: [RN_DEV, RN_PROD],
|
|
config: {
|
|
destDir: 'build/',
|
|
moduleName: 'ReactNativeFiber',
|
|
sourceMap: false,
|
|
},
|
|
entry: 'src/renderers/native/ReactNativeFiber.js',
|
|
externals: [
|
|
'ExceptionsManager',
|
|
'InitializeCore',
|
|
'ReactNativeFeatureFlags',
|
|
'RCTEventEmitter',
|
|
'TextInputState',
|
|
'UIManager',
|
|
'View',
|
|
'deepDiffer',
|
|
'deepFreezeAndThrowOnMutationInDev',
|
|
'flattenStyle',
|
|
'prop-types/checkPropTypes',
|
|
],
|
|
hasteName: 'ReactNativeFiber',
|
|
isRenderer: true,
|
|
label: 'native-fiber',
|
|
manglePropertiesOnProd: false,
|
|
name: 'react-native-renderer',
|
|
paths: [
|
|
'src/renderers/native/**/*.js',
|
|
'src/renderers/shared/**/*.js',
|
|
|
|
'src/ReactVersion.js',
|
|
'src/shared/**/*.js',
|
|
],
|
|
useFiber: true,
|
|
},
|
|
|
|
/******* React Test Renderer *******/
|
|
{
|
|
babelOpts: babelOptsReact,
|
|
bundleTypes: [FB_DEV, NODE_DEV],
|
|
config: {
|
|
destDir: 'build/',
|
|
moduleName: 'ReactTestRenderer',
|
|
sourceMap: false,
|
|
},
|
|
entry: 'src/renderers/testing/ReactTestRendererFiber',
|
|
externals: ['prop-types/checkPropTypes'],
|
|
fbEntry: 'src/renderers/testing/ReactTestRendererFiber',
|
|
hasteName: 'ReactTestRendererFiber',
|
|
isRenderer: true,
|
|
label: 'test-fiber',
|
|
manglePropertiesOnProd: false,
|
|
name: 'react-test-renderer',
|
|
paths: [
|
|
'src/renderers/native/**/*.js',
|
|
'src/renderers/shared/**/*.js',
|
|
'src/renderers/testing/**/*.js',
|
|
|
|
'src/ReactVersion.js',
|
|
'src/shared/**/*.js',
|
|
],
|
|
},
|
|
{
|
|
babelOpts: babelOptsReact,
|
|
bundleTypes: [FB_DEV, NODE_DEV],
|
|
config: {
|
|
destDir: 'build/',
|
|
moduleName: 'ReactTestRenderer',
|
|
sourceMap: false,
|
|
},
|
|
entry: 'src/renderers/testing/stack/ReactTestRendererStack',
|
|
externals: ['prop-types/checkPropTypes'],
|
|
fbEntry: 'src/renderers/testing/stack/ReactTestRendererStack',
|
|
hasteName: 'ReactTestRendererStack',
|
|
isRenderer: true,
|
|
label: 'test-stack',
|
|
manglePropertiesOnProd: false,
|
|
name: 'react-test-renderer/stack',
|
|
paths: [
|
|
'src/renderers/native/**/*.js',
|
|
'src/renderers/shared/**/*.js',
|
|
'src/renderers/testing/**/*.js',
|
|
|
|
'src/ReactVersion.js',
|
|
'src/shared/**/*.js',
|
|
],
|
|
},
|
|
{
|
|
babelOpts: babelOptsReact,
|
|
bundleTypes: [FB_DEV, NODE_DEV],
|
|
config: {
|
|
destDir: 'build/',
|
|
moduleName: 'ReactShallowRenderer',
|
|
sourceMap: false,
|
|
},
|
|
entry: 'src/renderers/testing/ReactShallowRenderer',
|
|
externals: [
|
|
'react-dom',
|
|
'prop-types/checkPropTypes',
|
|
'react-test-renderer',
|
|
],
|
|
fbEntry: 'src/renderers/testing/ReactShallowRenderer',
|
|
hasteName: 'ReactShallowRenderer',
|
|
isRenderer: true,
|
|
label: 'shallow-renderer',
|
|
manglePropertiesOnProd: false,
|
|
name: 'react-test-renderer/shallow',
|
|
paths: ['src/renderers/shared/**/*.js', 'src/renderers/testing/**/*.js'],
|
|
},
|
|
|
|
/******* React Noop Renderer (used only for fixtures/fiber-debugger) *******/
|
|
{
|
|
babelOpts: babelOptsReact,
|
|
bundleTypes: [NODE_DEV],
|
|
config: {
|
|
destDir: 'build/',
|
|
globals: {
|
|
react: 'React',
|
|
},
|
|
moduleName: 'ReactNoop',
|
|
sourceMap: false,
|
|
},
|
|
entry: 'src/renderers/noop/ReactNoop.js',
|
|
externals: ['prop-types/checkPropTypes'],
|
|
isRenderer: true,
|
|
label: 'noop-fiber',
|
|
manglePropertiesOnProd: false,
|
|
name: 'react-noop-renderer',
|
|
paths: [
|
|
'src/renderers/noop/**/*.js',
|
|
'src/renderers/shared/**/*.js',
|
|
|
|
'src/ReactVersion.js',
|
|
'src/shared/**/*.js',
|
|
],
|
|
},
|
|
];
|
|
|
|
module.exports = {
|
|
bundleTypes,
|
|
bundles,
|
|
};
|