react-core npm module

This commit is contained in:
Paul O’Shannessy
2013-10-22 17:59:24 -07:00
parent e839405202
commit 9162cb8abe
6 changed files with 121 additions and 4 deletions

View File

@@ -9,6 +9,7 @@ var webdriverJasmineTasks = require('./grunt/tasks/webdriver-jasmine');
var sauceTunnelTask = require('./grunt/tasks/sauce-tunnel');
var npmTask = require('./grunt/tasks/npm');
var releaseTasks = require('./grunt/tasks/release');
var reactCoreTasks = require('./grunt/tasks/react-core');
module.exports = function(grunt) {
@@ -51,17 +52,33 @@ module.exports = function(grunt) {
grunt.registerMultiTask('npm', npmTask);
grunt.registerTask('react-core:release', reactCoreTasks.buildRelease);
// 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*['"]([^'"]+)['"];/;
grunt.registerTask('version-check', function() {
var version = reactVersionExp.exec(
var reactVersion = reactVersionExp.exec(
grunt.file.read('./build/modules/React.js')
)[1];
var expectedVersion = grunt.config.data.pkg.version;
if (version !== expectedVersion) {
grunt.log.error('Versions do not match. Expected %s, saw %s', expectedVersion, version);
var reactCoreVersion = grunt.file.readJSON('./npm-react-core/package.json').version;
var reactToolsVersion = grunt.config.data.pkg.version;
if (reactVersion !== reactToolsVersion) {
grunt.log.error(
'React version does not match react-tools version. Expected %s, saw %s',
reactToolsVersion,
reactVersion
);
return false;
}
if (reactCoreVersion !== reactToolsVersion) {
grunt.log.error(
'react-core version does not match react-tools veersion. Expected %s, saw %s',
reactToolsVersion,
reactCoreVersion
);
return false;
}
});
@@ -81,6 +98,7 @@ module.exports = function(grunt) {
'version-check',
'populist:test'
]);
grunt.registerTask('build:react-core', ['version-check', 'jsx:release', 'react-core:release']);
grunt.registerTask('webdriver-phantomjs', webdriverPhantomJSTask);

47
grunt/tasks/react-core.js vendored Normal file
View File

@@ -0,0 +1,47 @@
'use strict';
var grunt = require('grunt');
var src = 'npm-react-core/';
var dest = 'build/react-core/';
var modSrc = 'build/modules/';
var lib = dest + 'lib/';
function buildRelease() {
// delete build/react-core for fresh start
grunt.file.exists(dest) && grunt.file.delete(dest);
// mkdir -p build/react-core/lib
grunt.file.mkdir(lib);
// Copy everything over
// console.log(grunt.file.expandMapping(src + '**/*', dest, {flatten: true}));
grunt.file.expandMapping(src + '**/*', dest, {flatten: true}).forEach(function(mapping) {
var src = mapping.src[0];
var dest = mapping.dest;
if (grunt.file.isDir(src)) {
grunt.file.mkdir(dest);
} else {
grunt.file.copy(src, dest);
}
});
// copy build/modules/*.js to build/react-core/lib
grunt.file.expandMapping(modSrc + '*.js', lib, { flatten: true }).forEach(function(mapping) {
grunt.file.copy(mapping.src[0], mapping.dest);
});
// modify build/react-core/package.json to set version ##
var pkg = grunt.file.readJSON(dest + 'package.json');
pkg.version = grunt.config.data.pkg.version;
grunt.file.write(dest + 'package.json', JSON.stringify(pkg, null, 2));
}
function buildDev() {
// TODO: same as above except different destination
}
module.exports = {
buildRelease: buildRelease,
buildDev: buildDev
};

21
npm-react-core/README.md Normal file
View File

@@ -0,0 +1,21 @@
# react-core
An npm package to get you immediate access to `React`, without also requiring
the JSX transformer. This is especially useful for cases where you want to
[`browserify`](https://github.com/substack/node-browserify) your module using
`React`.
## Example Usage
```js
// Previously, you might access React with react-tools.
var React = require('react-tools').React;
// Now you can access React directly with react-core.
var React = require('react-core');
// You can also access ReactWithAddons.
var React = require('react-core/addons');
```

1
npm-react-core/addons.js Normal file
View File

@@ -0,0 +1 @@
module.exports = require('./lib/ReactWithAddons');

View File

@@ -0,0 +1,29 @@
{
"name": "react-core",
"version": "0.6.0-alpha",
"keywords": [
"react"
],
"homepage": "https://github.com/facebook/react/tree/master/npm-react-core",
"bugs": "https://github.com/facebook/react/issues?labels=react-core",
"licenses": [
{
"type": "Apache-2.0",
"url": "http://www.apache.org/licenses/LICENSE-2.0"
}
],
"files": [
"README.md",
"addons.js",
"react.js",
"lib/"
],
"main": "react.js",
"repository": {
"type": "git",
"url": "https://github.com/facebook/react"
},
"engines": {
"node": ">=0.10.0"
}
}

1
npm-react-core/react.js vendored Normal file
View File

@@ -0,0 +1 @@
module.exports = require('./lib/React');