Files
react/scripts/rollup/bundles.js
T
Sebastian Markbåge 761decb352 Fork React Native render into an "RT" renderer (#11072)
This is an experimental new protocol for some experiments we want to play
with. To make that easier, I'm just going to fork it.

This experiment won't use the event system so I by-pass it and just invoke
functions on the props object for now.

I also fork the UIManager into a new RTManager.
2017-10-03 18:48:23 -04:00

428 lines
11 KiB
JavaScript

'use strict';
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/**',
presets: [],
plugins: [],
};
const babelOptsReactART = Object.assign({}, babelOptsReact, {
// Include JSX
presets: babelOptsReact.presets.concat([
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/ReactEntry',
externals: [
'create-react-class/factory',
'prop-types',
'prop-types/checkPropTypes',
],
fbEntry: 'src/isomorphic/ReactEntry',
hasteName: 'React',
isRenderer: false,
label: 'core',
manglePropertiesOnProd: false,
name: 'react',
paths: [
'src/isomorphic/**/*.js',
'src/ReactVersion.js',
'src/shared/**/*.js',
],
},
/******* React DOM *******/
{
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/ReactDOMFiberEntry',
externals: ['prop-types', 'prop-types/checkPropTypes'],
fbEntry: 'src/fb/ReactDOMFiberFBEntry',
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/ReactTestUtilsEntry',
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/ReactTestUtilsEntry',
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 internals required for react-native-web (e.g., to shim native events from react-dom) */
{
babelOpts: babelOptsReact,
bundleTypes: [UMD_DEV, UMD_PROD, NODE_DEV, NODE_PROD, FB_DEV, FB_PROD],
config: {
destDir: 'build/',
globals: {
react: 'React',
'react-dom': 'ReactDOM',
},
moduleName: 'ReactDOMUnstableNativeDependencies',
sourceMap: false,
},
entry: 'src/renderers/dom/shared/ReactDOMUnstableNativeDependenciesEntry',
externals: [
'react-dom',
'ReactDOM',
'prop-types',
'prop-types/checkPropTypes',
],
fbEntry: 'src/renderers/dom/shared/ReactDOMUnstableNativeDependenciesEntry',
hasteName: 'ReactDOMUnstableNativeDependencies',
isRenderer: false,
label: 'dom-unstable-native-dependencies',
manglePropertiesOnProd: false,
name: 'react-dom/unstable-native-dependencies',
paths: [
'src/renderers/dom/**/*.js',
'src/renderers/shared/**/*.js',
'src/ReactVersion.js',
'src/shared/**/*.js',
],
},
/******* React DOM Server *******/
{
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/ReactDOMServerBrowserEntry',
externals: ['prop-types', 'prop-types/checkPropTypes'],
fbEntry: 'src/renderers/dom/ReactDOMServerBrowserEntry',
hasteName: 'ReactDOMServer',
isRenderer: true,
label: 'dom-server-browser',
manglePropertiesOnProd: false,
name: 'react-dom/server.browser',
paths: [
'src/renderers/dom/**/*.js',
'src/renderers/shared/**/*.js',
'src/ReactVersion.js',
'src/shared/**/*.js',
],
},
{
babelOpts: babelOptsReact,
bundleTypes: [NODE_DEV, NODE_PROD],
config: {
destDir: 'build/',
globals: {
react: 'React',
},
moduleName: 'ReactDOMNodeStream',
sourceMap: false,
},
entry: 'src/renderers/dom/ReactDOMServerNodeEntry',
externals: ['prop-types', 'prop-types/checkPropTypes', 'stream'],
isRenderer: true,
label: 'dom-server-server-node',
manglePropertiesOnProd: false,
name: 'react-dom/server.node',
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: [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/ReactARTFiberEntry',
externals: [
'art/modes/current',
'art/modes/fast-noSideEffects',
'art/core/transform',
'prop-types/checkPropTypes',
'react-dom',
],
fbEntry: 'src/renderers/art/ReactARTFiberEntry',
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: 'ReactNativeFiber',
sourceMap: false,
},
entry: 'src/renderers/native/ReactNativeFiberEntry',
externals: [
'ExceptionsManager',
'InitializeCore',
'Platform',
'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 Native *******/
{
babelOpts: babelOptsReact,
bundleTypes: [RN_DEV, RN_PROD],
config: {
destDir: 'build/',
moduleName: 'ReactNativeRTFiber',
sourceMap: false,
},
entry: 'src/renderers/native-rt/ReactNativeRTFiberEntry',
externals: [
'ExceptionsManager',
'InitializeCore',
'Platform',
'RCTEventEmitter',
'RTManager',
'prop-types/checkPropTypes',
],
hasteName: 'ReactNativeRTFiber',
isRenderer: true,
label: 'native-rt-fiber',
manglePropertiesOnProd: false,
name: 'react-native-rt-renderer',
paths: [
'src/renderers/native/**/*.js', // This is used since we reuse the error dialog code
'src/renderers/native-rt/**/*.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/ReactTestRendererFiberEntry',
externals: ['prop-types/checkPropTypes'],
fbEntry: 'src/renderers/testing/ReactTestRendererFiberEntry',
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: 'ReactShallowRenderer',
sourceMap: false,
},
entry: 'src/renderers/testing/ReactShallowRendererEntry',
externals: [
'react-dom',
'prop-types/checkPropTypes',
'react-test-renderer',
],
fbEntry: 'src/renderers/testing/ReactShallowRendererEntry',
hasteName: 'ReactShallowRenderer',
isRenderer: true,
label: 'shallow-renderer',
manglePropertiesOnProd: false,
name: 'react-test-renderer/shallow',
paths: [
'src/renderers/shared/**/*.js',
'src/renderers/testing/**/*.js',
'src/shared/**/*.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/ReactNoopEntry',
externals: ['prop-types/checkPropTypes', 'jest-matchers'],
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',
],
},
];
// Based on deep-freeze by substack (public domain)
function deepFreeze(o) {
Object.freeze(o);
Object.getOwnPropertyNames(o).forEach(function(prop) {
if (
o[prop] !== null &&
(typeof o[prop] === 'object' || typeof o[prop] === 'function') &&
!Object.isFrozen(o[prop])
) {
deepFreeze(o[prop]);
}
});
return o;
}
// Don't accidentally mutate config as part of the build
deepFreeze(bundles);
module.exports = {
bundleTypes,
bundles,
};