mirror of
https://github.com/facebook/react.git
synced 2025-11-01 09:12:30 +00:00
313611572b
* Move files and tests to more meaningful places * Fix the build Now that we import reconciler via react-reconciler, I needed to make a few tweaks. * Update sizes * Move @preventMunge directive to FB header * Revert unintentional change * Fix Flow coverage I forgot to @flow-ify those files. This uncovered some issues. * Prettier, I love you but you're bringing me down Prettier, I love you but you're bringing me down Like a rat in a cage Pulling minimum wage Prettier, I love you but you're bringing me down Prettier, you're safer and you're wasting my time Our records all show you were filthy but fine But they shuttered your stores When you opened the doors To the cops who were bored once they'd run out of crime Prettier, you're perfect, oh, please don't change a thing Your mild billionaire mayor's now convinced he's a king So the boring collect I mean all disrespect In the neighborhood bars I'd once dreamt I would drink Prettier, I love you but you're freaking me out There's a ton of the twist but we're fresh out of shout Like a death in the hall That you hear through your wall Prettier, I love you but you're freaking me out Prettier, I love you but you're bringing me down Prettier, I love you but you're bringing me down Like a death of the heart Jesus, where do I start? But you're still the one pool where I'd happily drown And oh! Take me off your mailing list For kids who think it still exists Yes, for those who think it still exists Maybe I'm wrong and maybe you're right Maybe I'm wrong and maybe you're right Maybe you're right, maybe I'm wrong And just maybe you're right And oh! Maybe mother told you true And there'll always be somebody there for you And you'll never be alone But maybe she's wrong and maybe I'm right And just maybe she's wrong Maybe she's wrong and maybe I'm right And if so, here's this song!
445 lines
12 KiB
JavaScript
445 lines
12 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 moduleTypes = {
|
|
ISOMORPHIC: 'ISOMORPHIC',
|
|
RENDERER: 'RENDERER',
|
|
RENDERER_UTILS: 'RENDERER_UTILS',
|
|
RECONCILER: 'RECONCILER',
|
|
};
|
|
|
|
// React
|
|
const ISOMORPHIC = moduleTypes.ISOMORPHIC;
|
|
// Individual renderers. They bundle the reconciler. (e.g. ReactDOM)
|
|
const RENDERER = moduleTypes.RENDERER;
|
|
// Helper packages that access specific renderer's internals. (e.g. TestUtils)
|
|
const RENDERER_UTILS = moduleTypes.RENDERER_UTILS;
|
|
// Standalone reconciler for third-party renderers.
|
|
const RECONCILER = moduleTypes.RECONCILER;
|
|
|
|
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: 'packages/react/index.js',
|
|
externals: [
|
|
'create-react-class/factory',
|
|
'prop-types',
|
|
'prop-types/checkPropTypes',
|
|
],
|
|
fbEntry: 'packages/react/index.js',
|
|
hasteName: 'React',
|
|
moduleType: ISOMORPHIC,
|
|
label: 'core',
|
|
manglePropertiesOnProd: false,
|
|
name: 'react',
|
|
paths: ['packages/react/**/*.js', 'packages/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: 'packages/react-dom/index.js',
|
|
externals: ['prop-types', 'prop-types/checkPropTypes'],
|
|
fbEntry: 'packages/react-dom/index.fb.js',
|
|
hasteName: 'ReactDOMFiber',
|
|
moduleType: RENDERER,
|
|
label: 'dom-fiber',
|
|
manglePropertiesOnProd: false,
|
|
name: 'react-dom',
|
|
paths: [
|
|
'packages/react-dom/**/*.js',
|
|
'packages/react-reconciler/**/*.js',
|
|
'packages/shared/**/*.js',
|
|
],
|
|
},
|
|
{
|
|
babelOpts: babelOptsReact,
|
|
bundleTypes: [FB_DEV, NODE_DEV, NODE_PROD],
|
|
config: {
|
|
destDir: 'build/',
|
|
globals: {
|
|
react: 'React',
|
|
},
|
|
moduleName: 'ReactTestUtils',
|
|
sourceMap: false,
|
|
},
|
|
entry: 'packages/react-dom/test-utils.js',
|
|
externals: [
|
|
'prop-types',
|
|
'prop-types/checkPropTypes',
|
|
'react',
|
|
'react-dom',
|
|
],
|
|
fbEntry: 'packages/react-dom/test-utils.js',
|
|
hasteName: 'ReactTestUtils',
|
|
moduleType: RENDERER_UTILS,
|
|
label: 'test-utils',
|
|
manglePropertiesOnProd: false,
|
|
name: 'react-dom/test-utils',
|
|
paths: ['packages/react-dom/**/*.js', 'packages/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: 'packages/react-dom/unstable-native-dependencies.js',
|
|
externals: [
|
|
'react-dom',
|
|
'ReactDOM',
|
|
'prop-types',
|
|
'prop-types/checkPropTypes',
|
|
],
|
|
fbEntry: 'packages/react-dom/unstable-native-dependencies.js',
|
|
hasteName: 'ReactDOMUnstableNativeDependencies',
|
|
moduleType: RENDERER_UTILS,
|
|
label: 'dom-unstable-native-dependencies',
|
|
manglePropertiesOnProd: false,
|
|
name: 'react-dom/unstable-native-dependencies',
|
|
paths: ['packages/react-dom/**/*.js', 'packages/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: 'packages/react-dom/server.browser.js',
|
|
externals: ['prop-types', 'prop-types/checkPropTypes'],
|
|
fbEntry: 'packages/react-dom/server.browser.js',
|
|
hasteName: 'ReactDOMServer',
|
|
moduleType: RENDERER,
|
|
label: 'dom-server-browser',
|
|
manglePropertiesOnProd: false,
|
|
name: 'react-dom/server.browser',
|
|
paths: ['packages/react-dom/**/*.js', 'packages/shared/**/*.js'],
|
|
},
|
|
|
|
{
|
|
babelOpts: babelOptsReact,
|
|
bundleTypes: [NODE_DEV, NODE_PROD],
|
|
config: {
|
|
destDir: 'build/',
|
|
globals: {
|
|
react: 'React',
|
|
},
|
|
moduleName: 'ReactDOMNodeStream',
|
|
sourceMap: false,
|
|
},
|
|
entry: 'packages/react-dom/server.js',
|
|
externals: ['prop-types', 'prop-types/checkPropTypes', 'stream'],
|
|
moduleType: RENDERER,
|
|
label: 'dom-server-server-node',
|
|
manglePropertiesOnProd: false,
|
|
name: 'react-dom/server.node',
|
|
paths: ['packages/react-dom/**/*.js', 'packages/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: 'packages/react-art/index.js',
|
|
externals: [
|
|
'art/modes/current',
|
|
'art/modes/fast-noSideEffects',
|
|
'art/core/transform',
|
|
'prop-types/checkPropTypes',
|
|
'react-dom',
|
|
],
|
|
fbEntry: 'packages/react-art/index.js',
|
|
hasteName: 'ReactARTFiber',
|
|
moduleType: RENDERER,
|
|
label: 'art-fiber',
|
|
manglePropertiesOnProd: false,
|
|
name: 'react-art',
|
|
paths: [
|
|
'packages/react-art/**/*.js',
|
|
'packages/react-reconciler/**/*.js',
|
|
'packages/shared/**/*.js',
|
|
],
|
|
},
|
|
|
|
/******* React Native *******/
|
|
{
|
|
babelOpts: babelOptsReact,
|
|
bundleTypes: [RN_DEV, RN_PROD],
|
|
config: {
|
|
destDir: 'build/',
|
|
moduleName: 'ReactNativeFiber',
|
|
sourceMap: false,
|
|
},
|
|
entry: 'packages/react-native-renderer/index.js',
|
|
externals: [
|
|
'ExceptionsManager',
|
|
'InitializeCore',
|
|
'Platform',
|
|
'RCTEventEmitter',
|
|
'TextInputState',
|
|
'UIManager',
|
|
'View',
|
|
'deepDiffer',
|
|
'deepFreezeAndThrowOnMutationInDev',
|
|
'flattenStyle',
|
|
'prop-types/checkPropTypes',
|
|
],
|
|
hasteName: 'ReactNativeFiber',
|
|
moduleType: RENDERER,
|
|
label: 'native-fiber',
|
|
manglePropertiesOnProd: false,
|
|
name: 'react-native-renderer',
|
|
paths: [
|
|
'packages/react-native-renderer/**/*.js',
|
|
'packages/react-reconciler/**/*.js',
|
|
'packages/shared/**/*.js',
|
|
],
|
|
},
|
|
|
|
/******* React Native RT *******/
|
|
{
|
|
babelOpts: babelOptsReact,
|
|
bundleTypes: [RN_DEV, RN_PROD],
|
|
config: {
|
|
destDir: 'build/',
|
|
moduleName: 'ReactNativeRTFiber',
|
|
sourceMap: false,
|
|
},
|
|
entry: 'packages/react-rt-renderer/index.js',
|
|
externals: [
|
|
'ExceptionsManager',
|
|
'InitializeCore',
|
|
'Platform',
|
|
'BatchedBridge',
|
|
'RTManager',
|
|
'prop-types/checkPropTypes',
|
|
],
|
|
hasteName: 'ReactNativeRTFiber',
|
|
moduleType: RENDERER,
|
|
isRenderer: true,
|
|
label: 'native-rt-fiber',
|
|
manglePropertiesOnProd: false,
|
|
name: 'react-native-rt-renderer',
|
|
paths: [
|
|
'packages/react-native-renderer/**/*.js', // This is used since we reuse the error dialog code
|
|
'packages/react-rt-renderer/**/*.js',
|
|
'packages/react-reconciler/**/*.js',
|
|
'packages/shared/**/*.js',
|
|
],
|
|
},
|
|
|
|
/******* React Native CS *******/
|
|
{
|
|
babelOpts: babelOptsReact,
|
|
bundleTypes: [RN_DEV, RN_PROD],
|
|
config: {
|
|
destDir: 'build/',
|
|
moduleName: 'ReactNativeCSFiber',
|
|
sourceMap: false,
|
|
},
|
|
entry: 'packages/react-cs-renderer/index.js',
|
|
externals: ['prop-types/checkPropTypes'],
|
|
hasteName: 'ReactNativeCSFiber',
|
|
moduleType: RENDERER,
|
|
isRenderer: true,
|
|
label: 'native-cs-fiber',
|
|
manglePropertiesOnProd: false,
|
|
name: 'react-native-cs-renderer',
|
|
featureFlags: 'packages/react-cs-renderer/src/ReactNativeCSFeatureFlags',
|
|
paths: [
|
|
'packages/react-native-renderer/**/*.js', // This is used since we reuse the error dialog code
|
|
'packages/react-cs-renderer/**/*.js',
|
|
'packages/react-reconciler/**/*.js',
|
|
'packages/shared/**/*.js',
|
|
],
|
|
},
|
|
|
|
/******* React Test Renderer *******/
|
|
{
|
|
babelOpts: babelOptsReact,
|
|
bundleTypes: [FB_DEV, NODE_DEV, NODE_PROD],
|
|
config: {
|
|
destDir: 'build/',
|
|
moduleName: 'ReactTestRenderer',
|
|
sourceMap: false,
|
|
},
|
|
entry: 'packages/react-test-renderer/index.js',
|
|
externals: ['prop-types/checkPropTypes'],
|
|
fbEntry: 'packages/react-test-renderer/index.js',
|
|
hasteName: 'ReactTestRendererFiber',
|
|
moduleType: RENDERER,
|
|
label: 'test-fiber',
|
|
manglePropertiesOnProd: false,
|
|
name: 'react-test-renderer',
|
|
paths: [
|
|
'packages/react-test-renderer/**/*.js',
|
|
'packages/react-reconciler/**/*.js',
|
|
'packages/shared/**/*.js',
|
|
],
|
|
},
|
|
{
|
|
babelOpts: babelOptsReact,
|
|
bundleTypes: [FB_DEV, NODE_DEV, NODE_PROD],
|
|
config: {
|
|
destDir: 'build/',
|
|
moduleName: 'ReactShallowRenderer',
|
|
sourceMap: false,
|
|
},
|
|
entry: 'packages/react-test-renderer/shallow.js',
|
|
externals: [
|
|
'react-dom',
|
|
'prop-types/checkPropTypes',
|
|
'react-test-renderer',
|
|
],
|
|
fbEntry: 'packages/react-test-renderer/shallow.js',
|
|
hasteName: 'ReactShallowRenderer',
|
|
moduleType: RENDERER,
|
|
label: 'shallow-renderer',
|
|
manglePropertiesOnProd: false,
|
|
name: 'react-test-renderer/shallow',
|
|
paths: ['packages/react-test-renderer/**/*.js', 'packages/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: 'packages/react-noop-renderer/index.js',
|
|
externals: ['prop-types/checkPropTypes', 'jest-matchers'],
|
|
moduleType: RENDERER,
|
|
label: 'noop-fiber',
|
|
manglePropertiesOnProd: false,
|
|
name: 'react-noop-renderer',
|
|
paths: [
|
|
'packages/react-noop/**/*.js',
|
|
'packages/react-reconciler/**/*.js',
|
|
'packages/shared/**/*.js',
|
|
],
|
|
},
|
|
|
|
/******* React Reconciler *******/
|
|
{
|
|
babelOpts: babelOptsReact,
|
|
bundleTypes: [NODE_DEV, NODE_PROD],
|
|
config: {
|
|
destDir: 'build/',
|
|
globals: {
|
|
react: 'React',
|
|
},
|
|
moduleName: 'ReactReconciler',
|
|
sourceMap: false,
|
|
},
|
|
entry: 'packages/react-reconciler/index.js',
|
|
externals: ['react', 'prop-types/checkPropTypes'],
|
|
moduleType: RECONCILER,
|
|
label: 'react-reconciler',
|
|
manglePropertiesOnProd: false,
|
|
name: 'react-reconciler',
|
|
paths: ['packages/react-reconciler/**/*.js', 'packages/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,
|
|
moduleTypes,
|
|
bundles,
|
|
};
|