mirror of
https://github.com/facebook/react.git
synced 2025-11-01 09:12:30 +00:00
@@ -75,6 +75,10 @@ module.exports = function(grunt) {
|
||||
var npmReactDOMTasks = require('./grunt/tasks/npm-react-dom');
|
||||
grunt.registerTask('npm-react-dom:pack', npmReactDOMTasks.packRelease);
|
||||
|
||||
var npmReactAddonsTasks = require('./grunt/tasks/npm-react-addons');
|
||||
grunt.registerTask('npm-react-addons:release', npmReactAddonsTasks.buildReleases);
|
||||
grunt.registerTask('npm-react-addons:pack', npmReactAddonsTasks.packReleases);
|
||||
|
||||
var gemReactSourceTasks = require('./grunt/tasks/gem-react-source');
|
||||
grunt.registerTask('gem-react-source:release', gemReactSourceTasks.buildRelease);
|
||||
grunt.registerTask('gem-react-source:pack', gemReactSourceTasks.packRelease);
|
||||
@@ -228,6 +232,8 @@ module.exports = function(grunt) {
|
||||
'npm-react-tools:release',
|
||||
'npm-react-tools:pack',
|
||||
'npm-react-dom:pack',
|
||||
'npm-react-addons:release',
|
||||
'npm-react-addons:pack',
|
||||
'compare_size',
|
||||
]);
|
||||
|
||||
|
||||
@@ -0,0 +1,117 @@
|
||||
'use strict';
|
||||
|
||||
var assign = require('object-assign');
|
||||
var fs = require('fs');
|
||||
var grunt = require('grunt');
|
||||
var path = require('path');
|
||||
|
||||
var addons = {
|
||||
CSSTransitionGroup: {
|
||||
module: 'ReactCSSTransitionGroup',
|
||||
name: 'css-transition-group',
|
||||
},
|
||||
LinkedStateMixin: {
|
||||
module: 'LinkedStateMixin',
|
||||
name: 'linked-state-mixin',
|
||||
},
|
||||
PureRenderMixin: {
|
||||
module: 'ReactComponentWithPureRenderMixin',
|
||||
name: 'pure-render-mixin',
|
||||
},
|
||||
TransitionGroup: {
|
||||
module: 'ReactTransitionGroup',
|
||||
name: 'transition-group',
|
||||
},
|
||||
cloneWithProps: {
|
||||
module: 'cloneWithProps',
|
||||
name: 'clone-with-props',
|
||||
},
|
||||
createFragment: {
|
||||
module: 'ReactFragment',
|
||||
method: 'create',
|
||||
name: 'create-fragment',
|
||||
},
|
||||
shallowCompare: {
|
||||
module: 'shallowCompare',
|
||||
name: 'shallow-compare',
|
||||
},
|
||||
updates: {
|
||||
module: 'updates',
|
||||
name: 'updates',
|
||||
},
|
||||
};
|
||||
|
||||
function generateSource(info) {
|
||||
var pieces = [
|
||||
"module.exports = require('react/lib/",
|
||||
info.module,
|
||||
"')",
|
||||
];
|
||||
if (info.method) {
|
||||
pieces.push('.', info.method);
|
||||
}
|
||||
pieces.push(';');
|
||||
return pieces.join('');
|
||||
}
|
||||
|
||||
function buildReleases() {
|
||||
var pkgTemplate = grunt.file.readJSON('./packages/react-addons/package.json');
|
||||
var license = grunt.file.read('./LICENSE');
|
||||
var patents = grunt.file.read('./PATENTS');
|
||||
|
||||
Object.keys(addons).map(function(k) {
|
||||
var info = addons[k];
|
||||
var pkgName = 'react-addons-' + info.name;
|
||||
var destDir = 'build/packages/' + pkgName;
|
||||
|
||||
var pkgData = assign({}, pkgTemplate);
|
||||
pkgData.name = pkgName;
|
||||
|
||||
grunt.file.mkdir(destDir);
|
||||
fs.writeFileSync(path.join(destDir, 'index.js'), generateSource(info));
|
||||
fs.writeFileSync(path.join(destDir, 'package.json'), JSON.stringify(pkgData, null, 2));
|
||||
fs.writeFileSync(path.join(destDir, 'LICENSE'), license);
|
||||
fs.writeFileSync(path.join(destDir, 'PATENTS'), patents);
|
||||
fs.writeFileSync(
|
||||
path.join(destDir, 'README.md'),
|
||||
'# ' + pkgName + '\n\n' +
|
||||
'This package provides the React ' + k + ' add-on. See ' +
|
||||
'http://facebook.github.io/react/docs/addons.html for more information.\n'
|
||||
);
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
function packReleases() {
|
||||
var done = this.async();
|
||||
var count = 0;
|
||||
|
||||
var addonKeys = Object.keys(addons);
|
||||
|
||||
addonKeys.forEach(function(k) {
|
||||
var info = addons[k];
|
||||
var pkgName = 'react-addons-' + info.name;
|
||||
var pkgDir = 'build/packages/' + pkgName;
|
||||
|
||||
var spawnCmd = {
|
||||
cmd: 'npm',
|
||||
args: ['pack', pkgDir],
|
||||
};
|
||||
grunt.util.spawn(spawnCmd, function() {
|
||||
var buildSrc = pkgName + '-' + grunt.config.data.pkg.version + '.tgz';
|
||||
var buildDest = 'build/packages/' + pkgName + '.tgz';
|
||||
fs.rename(buildSrc, buildDest, maybeDone);
|
||||
});
|
||||
});
|
||||
|
||||
function maybeDone() {
|
||||
if (++count === addonKeys.length) {
|
||||
done();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
buildReleases: buildReleases,
|
||||
packReleases: packReleases,
|
||||
};
|
||||
@@ -10,11 +10,15 @@ var reactVersionExp = /\bReact\.version\s*=\s*['"]([^'"]+)['"];/;
|
||||
module.exports = function() {
|
||||
var pkgVersion = grunt.config.data.pkg.version;
|
||||
|
||||
var addonsData = grunt.file.readJSON('./packages/react-addons/package.json');
|
||||
var versions = {
|
||||
'packages/react/package.json':
|
||||
grunt.file.readJSON('./packages/react/package.json').version,
|
||||
'packages/react-dom/package.json':
|
||||
grunt.file.readJSON('./packages/react-dom/package.json').version,
|
||||
'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],
|
||||
};
|
||||
|
||||
|
||||
@@ -53,6 +53,7 @@
|
||||
"gzip-js": "~0.3.2",
|
||||
"jasmine-tapreporter": "~0.2.2",
|
||||
"jest-cli": "^0.4.13",
|
||||
"object-assign": "^3.0.0",
|
||||
"optimist": "^0.6.1",
|
||||
"phantomjs": "^1.9.17",
|
||||
"platform": "^1.1.0",
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"name": "react-addons",
|
||||
"version": "0.14.0-alpha3",
|
||||
"main": "index.js",
|
||||
"license": "BSD-3-Clause",
|
||||
"peerDependencies": {
|
||||
"react": "^0.14.0-alpha3"
|
||||
}
|
||||
}
|
||||
@@ -2,7 +2,7 @@ var warning = require('./lib/warning');
|
||||
warning(
|
||||
false,
|
||||
"require('react/addons') is deprecated. " +
|
||||
"Access using require('react/addons/{addon}') instead."
|
||||
"Access using require('react-addons-{addon}') instead."
|
||||
);
|
||||
|
||||
module.exports = require('./lib/ReactWithAddons');
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
module.exports = require('../lib/ReactCSSTransitionGroup');
|
||||
@@ -1 +0,0 @@
|
||||
module.exports = require('../lib/LinkedStateMixin');
|
||||
@@ -1 +0,0 @@
|
||||
module.exports = require('../lib/ReactDefaultPerf');
|
||||
@@ -1 +0,0 @@
|
||||
module.exports = require('../lib/ReactComponentWithPureRenderMixin');
|
||||
@@ -1 +0,0 @@
|
||||
module.exports = require('../lib/ReactTestUtils');
|
||||
@@ -1 +0,0 @@
|
||||
module.exports = require('../lib/ReactTransitionGroup');
|
||||
@@ -1 +0,0 @@
|
||||
module.exports = require('../lib/ReactUpdates').batchedUpdates;
|
||||
@@ -1 +0,0 @@
|
||||
module.exports = require('../lib/cloneWithProps');
|
||||
@@ -1 +0,0 @@
|
||||
module.exports = require('../lib/ReactFragment').create;
|
||||
@@ -1 +0,0 @@
|
||||
module.exports = require('../lib/renderSubtreeIntoContainer');
|
||||
@@ -1 +0,0 @@
|
||||
module.exports = require('../lib/shallowCompare');
|
||||
@@ -1 +0,0 @@
|
||||
module.exports = require('../lib/update');
|
||||
@@ -20,6 +20,7 @@ var ReactInstanceHandles = require('ReactInstanceHandles');
|
||||
var ReactMount = require('ReactMount');
|
||||
var ReactPerf = require('ReactPerf');
|
||||
var ReactReconciler = require('ReactReconciler');
|
||||
var ReactUpdates = require('ReactUpdates');
|
||||
|
||||
var findDOMNode = require('findDOMNode');
|
||||
var renderSubtreeIntoContainer = require('renderSubtreeIntoContainer');
|
||||
@@ -33,7 +34,11 @@ var React = {
|
||||
findDOMNode: findDOMNode,
|
||||
render: render,
|
||||
unmountComponentAtNode: ReactMount.unmountComponentAtNode,
|
||||
_renderSubtreeIntoContainer: renderSubtreeIntoContainer,
|
||||
|
||||
/* eslint-disable camelcase */
|
||||
unstable_batchedUpdates: ReactUpdates.batchedUpdates,
|
||||
unstable_renderSubtreeIntoContainer: renderSubtreeIntoContainer,
|
||||
/* eslint-enable camelcase */
|
||||
};
|
||||
|
||||
// Inject the runtime into a devtools global hook regardless of browser.
|
||||
|
||||
Reference in New Issue
Block a user