From d7a6bfd32e739610859e71c970af3ca71a276ae6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Paul=20O=E2=80=99Shannessy?= Date: Tue, 1 Sep 2015 14:02:46 -0700 Subject: [PATCH 1/3] Move version to standalone module in preparation for reuse --- grunt/tasks/version-check.js | 7 +------ src/React.js | 3 +-- src/ReactVersion.js | 14 ++++++++++++++ src/isomorphic/ReactIsomorphic.js | 2 ++ src/renderers/dom/ReactDOM.js | 2 ++ src/renderers/dom/ReactDOMServer.js | 2 ++ 6 files changed, 22 insertions(+), 8 deletions(-) create mode 100644 src/ReactVersion.js diff --git a/grunt/tasks/version-check.js b/grunt/tasks/version-check.js index 8da961b0bd30f..ff6da818c0de0 100644 --- a/grunt/tasks/version-check.js +++ b/grunt/tasks/version-check.js @@ -2,11 +2,6 @@ var grunt = require('grunt'); -// Check that the version we're exporting is the same one we expect in the -// package. This is not an ideal way to do this, but makes sure that we keep -// them in sync. -var reactVersionExp = /\bReact\.version\s*=\s*['"]([^'"]+)['"];/; - module.exports = function() { var pkgVersion = grunt.config.data.pkg.version; @@ -19,7 +14,7 @@ module.exports = function() { 'packages/react-addons/package.json (version)': addonsData.version, // Get the "version" without the range bit 'packages/react-addons/package.json (react dependency)': addonsData.peerDependencies.react.slice(1), - 'src/React.js': reactVersionExp.exec(grunt.file.read('./src/React.js'))[1], + 'src/ReactVersion.js': require('../../src/ReactVersion'), }; // Return true (ok) or false (failed) diff --git a/src/React.js b/src/React.js index 3a1f07f573d5b..ed7b29803e25b 100644 --- a/src/React.js +++ b/src/React.js @@ -18,6 +18,7 @@ var ReactIsomorphic = require('ReactIsomorphic'); var assign = require('Object.assign'); var deprecated = require('deprecated'); +// `version` will be added here by ReactIsomorphic. var React = {}; assign(React, ReactIsomorphic); @@ -63,6 +64,4 @@ assign(React, { ), }); -React.version = '0.14.0-beta3'; - module.exports = React; diff --git a/src/ReactVersion.js b/src/ReactVersion.js new file mode 100644 index 0000000000000..5ebfd8d8d2ce9 --- /dev/null +++ b/src/ReactVersion.js @@ -0,0 +1,14 @@ +/** + * Copyright 2013-2015, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + * @providesModule ReactVersion + */ + +'use strict'; + +module.exports = '0.14.0-beta3'; diff --git a/src/isomorphic/ReactIsomorphic.js b/src/isomorphic/ReactIsomorphic.js index df49734344171..2320a3f7e7ed6 100644 --- a/src/isomorphic/ReactIsomorphic.js +++ b/src/isomorphic/ReactIsomorphic.js @@ -18,6 +18,7 @@ var ReactDOMFactories = require('ReactDOMFactories'); var ReactElement = require('ReactElement'); var ReactElementValidator = require('ReactElementValidator'); var ReactPropTypes = require('ReactPropTypes'); +var ReactVersion = require('ReactVersion'); var assign = require('Object.assign'); var onlyChild = require('onlyChild'); @@ -33,6 +34,7 @@ if (__DEV__) { } var React = { + version: ReactVersion, // Modern diff --git a/src/renderers/dom/ReactDOM.js b/src/renderers/dom/ReactDOM.js index f2d7270902cc9..9182e3ffc100b 100644 --- a/src/renderers/dom/ReactDOM.js +++ b/src/renderers/dom/ReactDOM.js @@ -21,6 +21,7 @@ var ReactMount = require('ReactMount'); var ReactPerf = require('ReactPerf'); var ReactReconciler = require('ReactReconciler'); var ReactUpdates = require('ReactUpdates'); +var ReactVersion = require('ReactVersion'); var findDOMNode = require('findDOMNode'); var renderSubtreeIntoContainer = require('renderSubtreeIntoContainer'); @@ -34,6 +35,7 @@ var React = { findDOMNode: findDOMNode, render: render, unmountComponentAtNode: ReactMount.unmountComponentAtNode, + version: ReactVersion, /* eslint-disable camelcase */ unstable_batchedUpdates: ReactUpdates.batchedUpdates, diff --git a/src/renderers/dom/ReactDOMServer.js b/src/renderers/dom/ReactDOMServer.js index 19734cfea4c7c..eb19171948373 100644 --- a/src/renderers/dom/ReactDOMServer.js +++ b/src/renderers/dom/ReactDOMServer.js @@ -13,12 +13,14 @@ var ReactDefaultInjection = require('ReactDefaultInjection'); var ReactServerRendering = require('ReactServerRendering'); +var ReactVersion = require('ReactVersion'); ReactDefaultInjection.inject(); var ReactDOMServer = { renderToString: ReactServerRendering.renderToString, renderToStaticMarkup: ReactServerRendering.renderToStaticMarkup, + version: ReactVersion, }; module.exports = ReactDOMServer; From 6d92ece6d7dd7e376b754ba6f72e9a6a35f0ab8b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Paul=20O=E2=80=99Shannessy?= Date: Tue, 1 Sep 2015 14:03:43 -0700 Subject: [PATCH 2/3] Build ReactWithReactDOM.js for browser --- Gruntfile.js | 5 +++++ grunt/config/browserify.js | 14 ++++++++++++++ src/ReactWithReactDOM.js | 30 ++++++++++++++++++++++++++++++ 3 files changed, 49 insertions(+) create mode 100644 src/ReactWithReactDOM.js diff --git a/Gruntfile.js b/Gruntfile.js index e99175b6a10b1..dcf3561d6d101 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -107,6 +107,10 @@ module.exports = function(grunt) { 'build-modules', 'npm-react:release', ]); + grunt.registerTask('build:with-dom', [ + 'build-modules', + 'browserify:withDOM', + ]); grunt.registerTask('test', ['jest']); grunt.registerTask('npm:test', ['build', 'npm:pack']); @@ -124,6 +128,7 @@ module.exports = function(grunt) { 'browserify:addons', 'browserify:min', 'browserify:addonsMin', + 'browserify:withDOM', 'npm-react:release', 'npm-react:pack', 'npm-react-dom:pack', diff --git a/grunt/config/browserify.js b/grunt/config/browserify.js index ac84b9beb897f..162b2bfaa1fa6 100644 --- a/grunt/config/browserify.js +++ b/grunt/config/browserify.js @@ -83,6 +83,19 @@ var min = { after: [minify, bannerify], }; +var withDOM = { + entries: [ + './build/modules/ReactWithReactDOM.js', + ], + outfile: './build/react-with-dom.js', + debug: false, + standalone: 'ReactWithDOM', + // Apply as global transform so that we also envify fbjs and any other deps + globalTransforms: [envifyDev], + plugins: [collapser], + after: [derequire, simpleBannerify], +}; + var transformer = { entries:[ './vendor/browser-transforms.js', @@ -132,6 +145,7 @@ var addonsMin = { module.exports = { basic: basic, min: min, + withDOM: withDOM, transformer: transformer, addons: addons, addonsMin: addonsMin, diff --git a/src/ReactWithReactDOM.js b/src/ReactWithReactDOM.js new file mode 100644 index 0000000000000..e55606ba995ac --- /dev/null +++ b/src/ReactWithReactDOM.js @@ -0,0 +1,30 @@ +/** + * Copyright 2013-2015, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + * @providesModule ReactWithReactDOM + */ + +'use strict'; + +var ReactDOM = require('ReactDOM'); +var ReactDOMServer = require('ReactDOMServer'); +var React = require('React'); + +var ReactWithReactDOM = { + React: React, + ReactDOM: ReactDOM, + ReactDOMServer: ReactDOMServer, +}; + +// In addition to exporting, we're going to set globals on the window. This file +// will only be consumed in the browser so we can just assume window will exist. +window.React = React; +window.ReactDOM = ReactDOM; +window.ReactDOMServer = ReactDOMServer; + +module.exports = ReactWithReactDOM; From 2e466572560576ba517bff8d7f92a084e0026a6c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Paul=20O=E2=80=99Shannessy?= Date: Tue, 1 Sep 2015 14:06:03 -0700 Subject: [PATCH 3/3] Upload new build files to build server --- .travis.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.travis.yml b/.travis.yml index 14462df48690b..33c81b765caea 100644 --- a/.travis.yml +++ b/.travis.yml @@ -52,6 +52,7 @@ script: -F "transformer=@build/JSXTransformer.js" \ -F "react-with-addons=@build/react-with-addons.js" \ -F "react-with-addons.min=@build/react-with-addons.min.js" \ + -F "react-with-dom=@build/react-with-dom.js" -F "npm-react=@build/packages/react.tgz" \ -F "npm-react-dom=@build/packages/react-dom.tgz" \ -F "commit=$TRAVIS_COMMIT" \