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');