diff --git a/.gitignore b/.gitignore
index 8fedff2..2e285a4 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,4 @@
*~
node_modules
-browser-bundle.js
\ No newline at end of file
+browser-bundle.js
+.divshot-cache
diff --git a/README.md b/README.md
index 345f43e..9828ff0 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,5 @@
# how to use
* `npm install`
+* `npm run build`
* `npm start`
diff --git a/index.html b/dist/index.html
similarity index 100%
rename from index.html
rename to dist/index.html
diff --git a/divshot.json b/divshot.json
new file mode 100644
index 0000000..de2e49f
--- /dev/null
+++ b/divshot.json
@@ -0,0 +1,5 @@
+{
+ "name": "react-webpack-template",
+ "root": "./dist",
+ "clean_urls": true
+}
diff --git a/index.js b/index.js
deleted file mode 100644
index 4f6143e..0000000
--- a/index.js
+++ /dev/null
@@ -1,4 +0,0 @@
-/** @jsx React.DOM */
-var React = require('react');
-
-React.renderComponent(
Hello React!
, document.body);
diff --git a/package.json b/package.json
index f6c8a5c..b30c0a2 100644
--- a/package.json
+++ b/package.json
@@ -4,17 +4,41 @@
"description": "",
"main": "index.js",
"scripts": {
- "start": "webpack --progress --colors --watch",
- "test": "echo \"Error: no test specified\" && exit 1"
+ "start": "http-server dist/",
+ "build": "webpack --progress --colors --watch",
+ "test": "jest"
+ },
+ "jest": {
+ "scriptPreprocessor": "/tests/preprocessor.js",
+ "unmockedModulePathPatterns": [
+ "/node_modules/react"
+ ],
+ "moduleFileExtensions": [
+ "js",
+ "json",
+ "jsx"
+ ],
+ "testFileExtensions": [
+ "js"
+ ],
+ "testDirectoryName": "tests",
+ "testPathDirs": [
+ "/tests/unit",
+ "/tests/components"
+ ]
},
"author": "",
"license": "BSD-2-Clause",
"dependencies": {
"envify": "^1.2.0",
- "react": "^0.12.1"
+ "react": "^0.13.0-beta.1"
},
"devDependencies": {
- "webpack": "^1.4.13",
- "jsx-loader": "^0.12.2"
+ "html-webpack-plugin": "^1.1.0",
+ "http-server": "^0.7.4",
+ "jest-cli": "^0.2.2",
+ "jsx-loader": "^0.12.2",
+ "react-tools": "^0.12.2",
+ "webpack": "^1.4.13"
}
}
diff --git a/src/HelloMessage.js b/src/HelloMessage.js
new file mode 100644
index 0000000..e99e04d
--- /dev/null
+++ b/src/HelloMessage.js
@@ -0,0 +1,9 @@
+var React = require('react');
+
+class HelloMessage extends React.Component {
+ render() {
+ return Hello React
;
+ }
+}
+
+module.exports = HelloMessage;
diff --git a/src/index.js b/src/index.js
new file mode 100644
index 0000000..0558afd
--- /dev/null
+++ b/src/index.js
@@ -0,0 +1,5 @@
+/** @jsx React.DOM */
+var React = require('react');
+var HelloMessage = require('./HelloMessage');
+
+React.render(, document.body);
diff --git a/src/sum.js b/src/sum.js
new file mode 100644
index 0000000..873332d
--- /dev/null
+++ b/src/sum.js
@@ -0,0 +1,4 @@
+function sum(value1, value2) {
+ return value1 + value2;
+}
+module.exports = sum;
diff --git a/tests/components/HelloMessage.js b/tests/components/HelloMessage.js
new file mode 100644
index 0000000..8acf48f
--- /dev/null
+++ b/tests/components/HelloMessage.js
@@ -0,0 +1,18 @@
+var componentPath = '../../src/HelloMessage';
+jest.dontMock(componentPath);
+
+describe('HelloMessage', function() {
+ it('greets react', function() {
+ var React = require('react/addons');
+ var HelloMessage = require(componentPath);
+ var TestUtils = React.addons.TestUtils;
+
+ var message = TestUtils.renderIntoDocument(
+
+ );
+
+ var div = TestUtils.findRenderedDOMComponentWithTag(
+ message, 'div');
+ expect(div.getDOMNode().textContent).toEqual('Hello React');
+ });
+});
diff --git a/tests/preprocessor.js b/tests/preprocessor.js
new file mode 100644
index 0000000..d380a11
--- /dev/null
+++ b/tests/preprocessor.js
@@ -0,0 +1,6 @@
+var ReactTools = require('react-tools');
+module.exports = {
+ process: function(src) {
+ return ReactTools.transform(src, {harmony: true});
+ }
+};
diff --git a/tests/unit/sum.js b/tests/unit/sum.js
new file mode 100644
index 0000000..beb7850
--- /dev/null
+++ b/tests/unit/sum.js
@@ -0,0 +1,9 @@
+var sumPath = '../../src/sum';
+jest.dontMock(sumPath);
+
+describe('sum', function() {
+ it('adds 1 + 2 to equal 3', function() {
+ var sum = require(sumPath);
+ expect(sum(1, 2)).toBe(3);
+ });
+});
diff --git a/webpack.config.js b/webpack.config.js
index 9a959f9..436cdf0 100644
--- a/webpack.config.js
+++ b/webpack.config.js
@@ -1,12 +1,14 @@
+var HtmlWebpackPlugin = require('html-webpack-plugin');
+
module.exports = {
cache: true,
- entry: './index',
+ entry: './src/index',
output: {
- filename: 'browser-bundle.js'
+ filename: './dist/browser-bundle.js'
},
module: {
loaders: [
- {test: /\.js$/, loader: 'jsx-loader'}
+ {test: /\.js$/, loader: 'jsx-loader?harmony'}
]
}
};