@samitouri / QOS-React-2 / commits / 9162cb8abe

react-core npm module

Paul O’Shannessy committed Oct 22, 2013 at 17:59 UTC 9162cb8abe8b1e48ca454cfddcceebd25ccc3dbd
6 files changed +121 -4
Gruntfile.js
+22 -4
@@ -9,6 +9,7 @@ var webdriverJasmineTasks = require('./grunt/tasks/webdriver-jasmine');
9 var sauceTunnelTask = require('./grunt/tasks/sauce-tunnel');
10 var npmTask = require('./grunt/tasks/npm');
11 var releaseTasks = require('./grunt/tasks/release');
12 +var reactCoreTasks = require('./grunt/tasks/react-core');
13
14 module.exports = function(grunt) {
15
@@ -51,17 +52,33 @@ module.exports = function(grunt) {
52
53 grunt.registerMultiTask('npm', npmTask);
54
55 + grunt.registerTask('react-core:release', reactCoreTasks.buildRelease);
56 +
57 // Check that the version we're exporting is the same one we expect in the
58 // package. This is not an ideal way to do this, but makes sure that we keep
59 // them in sync.
60 var reactVersionExp = /\bReact\.version\s*=\s*['"]([^'"]+)['"];/;
61 grunt.registerTask('version-check', function() {
59 - var version = reactVersionExp.exec(
62 + var reactVersion = reactVersionExp.exec(
63 grunt.file.read('./build/modules/React.js')
64 )[1];
62 - var expectedVersion = grunt.config.data.pkg.version;
63 - if (version !== expectedVersion) {
64 - grunt.log.error('Versions do not match. Expected %s, saw %s', expectedVersion, version);
65 + var reactCoreVersion = grunt.file.readJSON('./npm-react-core/package.json').version;
66 + var reactToolsVersion = grunt.config.data.pkg.version;
67 +
68 + if (reactVersion !== reactToolsVersion) {
69 + grunt.log.error(
70 + 'React version does not match react-tools version. Expected %s, saw %s',
71 + reactToolsVersion,
72 + reactVersion
73 + );
74 + return false;
75 + }
76 + if (reactCoreVersion !== reactToolsVersion) {
77 + grunt.log.error(
78 + 'react-core version does not match react-tools veersion. Expected %s, saw %s',
79 + reactToolsVersion,
80 + reactCoreVersion
81 + );
82 return false;
83 }
84 });
@@ -81,6 +98,7 @@ module.exports = function(grunt) {
98 'version-check',
99 'populist:test'
100 ]);
101 + grunt.registerTask('build:react-core', ['version-check', 'jsx:release', 'react-core:release']);
102
103 grunt.registerTask('webdriver-phantomjs', webdriverPhantomJSTask);
104
grunt/tasks/react-core.js new
+47
@@ -0,0 +1,47 @@
1 +'use strict';
2 +
3 +var grunt = require('grunt');
4 +
5 +var src = 'npm-react-core/';
6 +var dest = 'build/react-core/';
7 +var modSrc = 'build/modules/';
8 +var lib = dest + 'lib/';
9 +
10 +function buildRelease() {
11 + // delete build/react-core for fresh start
12 + grunt.file.exists(dest) && grunt.file.delete(dest);
13 +
14 + // mkdir -p build/react-core/lib
15 + grunt.file.mkdir(lib);
16 +
17 + // Copy everything over
18 + // console.log(grunt.file.expandMapping(src + '**/*', dest, {flatten: true}));
19 + grunt.file.expandMapping(src + '**/*', dest, {flatten: true}).forEach(function(mapping) {
20 + var src = mapping.src[0];
21 + var dest = mapping.dest;
22 + if (grunt.file.isDir(src)) {
23 + grunt.file.mkdir(dest);
24 + } else {
25 + grunt.file.copy(src, dest);
26 + }
27 + });
28 +
29 + // copy build/modules/*.js to build/react-core/lib
30 + grunt.file.expandMapping(modSrc + '*.js', lib, { flatten: true }).forEach(function(mapping) {
31 + grunt.file.copy(mapping.src[0], mapping.dest);
32 + });
33 +
34 + // modify build/react-core/package.json to set version ##
35 + var pkg = grunt.file.readJSON(dest + 'package.json');
36 + pkg.version = grunt.config.data.pkg.version;
37 + grunt.file.write(dest + 'package.json', JSON.stringify(pkg, null, 2));
38 +}
39 +
40 +function buildDev() {
41 + // TODO: same as above except different destination
42 +}
43 +
44 +module.exports = {
45 + buildRelease: buildRelease,
46 + buildDev: buildDev
47 +};
npm-react-core/README.md new
+21
@@ -0,0 +1,21 @@
1 +# react-core
2 +
3 +An npm package to get you immediate access to `React`, without also requiring
4 +the JSX transformer. This is especially useful for cases where you want to
5 +[`browserify`](https://github.com/substack/node-browserify) your module using
6 +`React`.
7 +
8 +## Example Usage
9 +
10 +```js
11 +
12 +// Previously, you might access React with react-tools.
13 +var React = require('react-tools').React;
14 +
15 +// Now you can access React directly with react-core.
16 +var React = require('react-core');
17 +
18 +// You can also access ReactWithAddons.
19 +var React = require('react-core/addons');
20 +```
21 +
npm-react-core/addons.js new
+1
@@ -0,0 +1 @@
1 +module.exports = require('./lib/ReactWithAddons');
npm-react-core/package.json new
+29
@@ -0,0 +1,29 @@
1 +{
2 + "name": "react-core",
3 + "version": "0.6.0-alpha",
4 + "keywords": [
5 + "react"
6 + ],
7 + "homepage": "https://github.com/facebook/react/tree/master/npm-react-core",
8 + "bugs": "https://github.com/facebook/react/issues?labels=react-core",
9 + "licenses": [
10 + {
11 + "type": "Apache-2.0",
12 + "url": "http://www.apache.org/licenses/LICENSE-2.0"
13 + }
14 + ],
15 + "files": [
16 + "README.md",
17 + "addons.js",
18 + "react.js",
19 + "lib/"
20 + ],
21 + "main": "react.js",
22 + "repository": {
23 + "type": "git",
24 + "url": "https://github.com/facebook/react"
25 + },
26 + "engines": {
27 + "node": ">=0.10.0"
28 + }
29 +}
npm-react-core/react.js new
+1
@@ -0,0 +1 @@
1 +module.exports = require('./lib/React');