diff --git a/.babelrc b/.babelrc index d545679b52..11a5434944 100644 --- a/.babelrc +++ b/.babelrc @@ -21,6 +21,5 @@ ["transform-es2015-block-scoping", { "throwIfClosureRequired": true }], "transform-es3-member-expression-literals", "transform-es3-property-literals", - "transform-react-jsx-source" ] } diff --git a/scripts/jest/preprocessor.js b/scripts/jest/preprocessor.js index 4a48cfe9e5..f1fd728992 100644 --- a/scripts/jest/preprocessor.js +++ b/scripts/jest/preprocessor.js @@ -39,6 +39,11 @@ var babelOptions = { } ), }], + // Keep stacks detailed in tests. + // Don't put this in .babelrc so that we don't embed filenames + // into ReactART builds that include JSX. + // TODO: I have not verified that this actually works. + require.resolve('babel-plugin-transform-react-jsx-source'), ], retainLines: true, }; diff --git a/scripts/rollup/bundles.js b/scripts/rollup/bundles.js index 7598470c14..647054e8c6 100644 --- a/scripts/rollup/bundles.js +++ b/scripts/rollup/bundles.js @@ -16,7 +16,13 @@ const babelOptsReact = { ], }; +const babelOptsReactART = Object.assign({}, babelOptsReact, { + // Include JSX + presets: [require.resolve('babel-preset-react')], +}); + const bundles = [ + /******* Isomorphic *******/ { babelOpts: babelOptsReact, config: { @@ -41,6 +47,8 @@ const bundles = [ ], createUMDBundles: true, }, + + /******* React DOM *******/ { babelOpts: babelOptsReact, config: { @@ -91,7 +99,61 @@ const bundles = [ 'src/shared/**/*.js', ], createUMDBundles: true, - }, + }, + + /******* React ART *******/ + { + babelOpts: babelOptsReactART, + config: { + destDir: 'build/rollup/', + globals: { + 'react': 'React', + }, + moduleName: 'ReactARTStack', + sourceMap: false, + }, + entry: 'src/renderers/art/ReactARTStack.js', + fbEntry: 'src/renderers/art/ReactARTStack.js', + hasteName: 'ReactARTStack', + name: 'react-art', + paths: [ + // TODO: it relies on ReactDOMFrameScheduling. Need to move to shared/? + 'src/renderers/dom/**/*.js', + 'src/renderers/art/**/*.js', + 'src/renderers/shared/**/*.js', + + 'src/ReactVersion.js', + 'src/shared/**/*.js', + ], + createUMDBundles: true, + }, + { + babelOpts: babelOptsReactART, + config: { + destDir: 'build/rollup/', + globals: { + 'react': 'React', + }, + moduleName: 'ReactARTFiber', + sourceMap: false, + }, + entry: 'src/renderers/art/ReactARTFiber.js', + fbEntry: 'src/renderers/art/ReactARTFiber.js', + hasteName: 'ReactARTFiber', + name: 'react-art', + paths: [ + // TODO: it relies on ReactDOMFrameScheduling. Need to move to shared/? + 'src/renderers/dom/**/*.js', + 'src/renderers/art/**/*.js', + 'src/renderers/shared/**/*.js', + + 'src/ReactVersion.js', + 'src/shared/**/*.js', + ], + createUMDBundles: true, + }, + + /******* React Native *******/ // { // babelOpts: babelOptsReact, // config: { diff --git a/src/renderers/art/ReactARTStack.js b/src/renderers/art/ReactARTStack.js index 5caf3d82de..c232ed9a07 100644 --- a/src/renderers/art/ReactARTStack.js +++ b/src/renderers/art/ReactARTStack.js @@ -27,7 +27,6 @@ const ReactUpdates = require('ReactUpdates'); const emptyObject = require('fbjs/lib/emptyObject'); const invariant = require('fbjs/lib/invariant'); -const assign = require('object-assign'); const pooledTransform = new Transform(); // Utilities @@ -56,7 +55,7 @@ function createComponent(name) { }; ReactARTComponent.displayName = name; for (let i = 1, l = arguments.length; i < l; i++) { - assign(ReactARTComponent.prototype, arguments[i]); + Object.assign(ReactARTComponent.prototype, arguments[i]); } return ReactARTComponent; @@ -93,7 +92,7 @@ function injectAfter(parentNode, referenceNode, node) { // ContainerMixin for components that can hold ART nodes -const ContainerMixin = assign({}, ReactMultiChild, { +const ContainerMixin = Object.assign({}, ReactMultiChild, { /** * Moves a child component to the supplied index. @@ -446,7 +445,7 @@ const ClippingRectangle = createComponent( // Renderables -const RenderableMixin = assign({}, NodeMixin, { +const RenderableMixin = Object.assign({}, NodeMixin, { applyRenderableProps: function(oldProps, props) { if (oldProps.fill !== props.fill) {