From ff542de59df93a7e33fab229d2b848233ee317da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Paul=20O=E2=80=99Shannessy?= Date: Thu, 17 Sep 2015 12:56:12 -0700 Subject: [PATCH] Build ReactDOM browser builds into react-dom/dist --- Gruntfile.js | 2 ++ grunt/tasks/npm-react-dom.js | 48 +++++++++++++++++++++++++++++++++--- grunt/tasks/npm-react.js | 2 -- 3 files changed, 46 insertions(+), 6 deletions(-) diff --git a/Gruntfile.js b/Gruntfile.js index c1bc0d265a407..8dee20f5553d6 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -72,6 +72,7 @@ module.exports = function(grunt) { grunt.registerTask('npm-react:pack', npmReactTasks.packRelease); var npmReactDOMTasks = require('./grunt/tasks/npm-react-dom'); + grunt.registerTask('npm-react-dom:release', npmReactDOMTasks.buildRelease); grunt.registerTask('npm-react-dom:pack', npmReactDOMTasks.packRelease); var npmReactAddonsTasks = require('./grunt/tasks/npm-react-addons'); @@ -123,6 +124,7 @@ module.exports = function(grunt) { 'build:react-dom', 'npm-react:release', 'npm-react:pack', + 'npm-react-dom:release', 'npm-react-dom:pack', 'npm-react-addons:release', 'npm-react-addons:pack', diff --git a/grunt/tasks/npm-react-dom.js b/grunt/tasks/npm-react-dom.js index ff126ee1c78f0..ceb0ed7422763 100644 --- a/grunt/tasks/npm-react-dom.js +++ b/grunt/tasks/npm-react-dom.js @@ -3,19 +3,59 @@ var fs = require('fs'); var grunt = require('grunt'); +var src = 'packages/react-dom/'; +var dest = 'build/packages/react-dom/'; +var dist = dest + 'dist/'; +var distFiles = [ + 'react-dom.js', + 'react-dom.min.js', +]; + +function buildRelease() { + if (grunt.file.exists(dest)) { + grunt.file.delete(dest); + } + + // Copy to build/packages/react-dom + var mappings = [].concat( + grunt.file.expandMapping('**/*', dest, {cwd: src}) + ); + mappings.forEach(function(mapping) { + var mappingSrc = mapping.src[0]; + var mappingDest = mapping.dest; + if (grunt.file.isDir(mappingSrc)) { + grunt.file.mkdir(mappingDest); + } else { + grunt.file.copy(mappingSrc, mappingDest); + } + }); + + // Make built source available inside npm package + grunt.file.mkdir(dist); + distFiles.forEach(function(file) { + grunt.file.copy('build/' + file, dist + file); + }); +} + function packRelease() { var done = this.async(); var spawnCmd = { cmd: 'npm', - args: ['pack', 'packages/react-dom'], + args: ['pack', 'react-dom'], + opts: { + cwd: 'build/packages/', + }, }; grunt.util.spawn(spawnCmd, function() { - var buildSrc = 'react-dom-' + grunt.config.data.pkg.version + '.tgz'; - var buildDest = 'build/packages/react-dom.tgz'; - fs.rename(buildSrc, buildDest, done); + fs.rename( + 'build/packages/react-dom-' + grunt.config.data.pkg.version + '.tgz', + 'build/packages/react-dom.tgz', + done + ); }); } module.exports = { + buildRelease: buildRelease, packRelease: packRelease, }; diff --git a/grunt/tasks/npm-react.js b/grunt/tasks/npm-react.js index 1fd635275e7a2..b2424b068b892 100644 --- a/grunt/tasks/npm-react.js +++ b/grunt/tasks/npm-react.js @@ -13,8 +13,6 @@ var distFiles = [ 'react.min.js', 'react-with-addons.js', 'react-with-addons.min.js', - 'react-dom.js', - 'react-dom.min.js', ]; function buildRelease() {