Build react-dom package
Paul O’Shannessy committed
Jun 11, 2015 at 14:19 UTC
3bae8f5f35b4f57c3645bb0cca8bd26db87d39f3
7 files changed
+126
-22
Gruntfile.js
+4
@@ -72,6 +72,9 @@ module.exports = function(grunt) {
72
grunt.registerTask('npm-react-tools:release', npmReactToolsTasks.buildRelease);
73
grunt.registerTask('npm-react-tools:pack', npmReactToolsTasks.packRelease);
74
75
+ var npmReactDOMTasks = require('./grunt/tasks/npm-react-dom');
76
+ grunt.registerTask('npm-react-dom:pack', npmReactDOMTasks.packRelease);
77
+
78
var gemReactSourceTasks = require('./grunt/tasks/gem-react-source');
79
grunt.registerTask('gem-react-source:release', gemReactSourceTasks.buildRelease);
80
grunt.registerTask('gem-react-source:pack', gemReactSourceTasks.packRelease);
@@ -224,6 +227,7 @@ module.exports = function(grunt) {
227
'npm-react:pack',
228
'npm-react-tools:release',
229
'npm-react-tools:pack',
230
+ 'npm-react-dom:pack',
231
'compare_size',
232
]);
233
grunt/tasks/npm-react-dom.js
new
+21
@@ -0,0 +1,21 @@
1
+'use strict';
2
+
3
+var fs = require('fs');
4
+var grunt = require('grunt');
5
+
6
+function packRelease() {
7
+ var done = this.async();
8
+ var spawnCmd = {
9
+ cmd: 'npm',
10
+ args: ['pack', 'npm-react-dom'],
11
+ };
12
+ grunt.util.spawn(spawnCmd, function() {
13
+ var buildSrc = 'react-dom-' + grunt.config.data.pkg.version + '.tgz';
14
+ var buildDest = 'build/react-dom.tgz';
15
+ fs.rename(buildSrc, buildDest, done);
16
+ });
17
+}
18
+
19
+module.exports = {
20
+ packRelease: packRelease,
21
+};
grunt/tasks/version-check.js
+24
-22
@@ -2,33 +2,35 @@
2
3
var grunt = require('grunt');
4
5
-
5
// Check that the version we're exporting is the same one we expect in the
6
// package. This is not an ideal way to do this, but makes sure that we keep
7
// them in sync.
8
var reactVersionExp = /\bReact\.version\s*=\s*['"]([^'"]+)['"];/;
9
10
module.exports = function() {
12
- var reactVersion = reactVersionExp.exec(
13
- grunt.file.read('./src/React.js')
14
- )[1];
15
- var npmReactVersion = grunt.file.readJSON('./npm-react/package.json').version;
16
- var reactToolsVersion = grunt.config.data.pkg.version;
11
+ var pkgVersion = grunt.config.data.pkg.version;
12
+
13
+ var versions = {
14
+ 'npm-react/package.json':
15
+ grunt.file.readJSON('./npm-react/package.json').version,
16
+ 'npm-react-dom/package.json':
17
+ grunt.file.readJSON('./npm-react-dom/package.json').version,
18
+ 'src/React.js': reactVersionExp.exec(grunt.file.read('./src/React.js'))[1],
19
+ };
20
18
- if (reactVersion !== reactToolsVersion) {
19
- grunt.log.error(
20
- 'React version does not match react-tools version. Expected %s, saw %s',
21
- reactToolsVersion,
22
- reactVersion
23
- );
24
- return false;
25
- }
26
- if (npmReactVersion !== reactToolsVersion) {
27
- grunt.log.error(
28
- 'npm-react version does not match react-tools version. Expected %s, saw %s',
29
- reactToolsVersion,
30
- npmReactVersion
31
- );
32
- return false;
33
- }
21
+ // Return true (ok) or false (failed)
22
+ return Object.keys(versions).reduce(function(prev, name) {
23
+ var version = versions[name];
24
+ var ok = true;
25
+ if (version !== pkgVersion) {
26
+ grunt.log.error(
27
+ '%s version does not match package.json. Expected %s, saw %s.',
28
+ name,
29
+ pkgVersion,
30
+ version
31
+ );
32
+ ok = false;
33
+ }
34
+ return prev && ok;
35
+ }, true);
36
};
npm-react-dom/README.md
new
+54
@@ -0,0 +1,54 @@
1
+# `react-dom`
2
+
3
+This package serves as the entry point of the DOM-related rendering paths. It is intended to be paired with the isomorphic React, which will be shipped as `react` to npm.
4
+
5
+## Installation
6
+
7
+```sh
8
+npm install react react-dom
9
+```
10
+
11
+## Usage
12
+
13
+### In the browser
14
+
15
+```js
16
+var React = require('react');
17
+var ReactDOM = require('react-dom');
18
+
19
+class MyComponent extends React.Component {
20
+ render() {
21
+ return <div>Hello World</div>;
22
+ }
23
+}
24
+
25
+ReactDOM.render(<MyComponent />, node);
26
+```
27
+
28
+### On the server
29
+
30
+```js
31
+var React = require('react');
32
+var ReactDOMServer = require('react-dom/server');
33
+
34
+class MyComponent extends React.Component {
35
+ render() {
36
+ return <div>Hello World</div>;
37
+ }
38
+}
39
+
40
+ReactDOMServer.renderToString(<MyComponent />);
41
+```
42
+
43
+## API
44
+
45
+### `react-dom`
46
+
47
+- `findDOMNode`
48
+- `render`
49
+- `unmountComponentAtNode`
50
+
51
+### `react-dom/server`
52
+
53
+- `renderToString`
54
+- `renderToStaticMarkup`
npm-react-dom/index.js
new
+1
@@ -0,0 +1 @@
1
+module.exports = require('react/lib/ReactDOMClient');
npm-react-dom/package.json
new
+21
@@ -0,0 +1,21 @@
1
+{
2
+ "name": "react-dom",
3
+ "version": "0.14.0-alpha3",
4
+ "description": "React package for working with the DOM.",
5
+ "main": "index.js",
6
+ "repository": {
7
+ "type": "git",
8
+ "url": "git+https://github.com/facebook/react.git"
9
+ },
10
+ "keywords": [
11
+ "react"
12
+ ],
13
+ "license": "BSD-3-Clause",
14
+ "bugs": {
15
+ "url": "https://github.com/facebook/react/issues"
16
+ },
17
+ "homepage": "https://github.com/facebook/react/tree/master/npm-react-dom",
18
+ "dependencies": {
19
+ "react": "^0.14.0-alpha3"
20
+ }
21
+}
npm-react-dom/server.js
new
+1
@@ -0,0 +1 @@
1
+module.exports = require('react/lib/ReactDOMServer');