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'} ] } };