From e1f1cfc4d357ae153aad43bac305bfca04455430 Mon Sep 17 00:00:00 2001 From: Jari Bakken Date: Thu, 30 Oct 2014 16:56:34 +0100 Subject: [PATCH] Use webpack to build JS/JSX resources. Closes #25. --- .gitignore | 4 ++-- .jshintrc | 4 +--- finnbuild.json | 9 ++++----- unleash-server/package.json | 10 ++++++++-- unleash-server/public/index.html | 6 +----- unleash-server/public/js/unleash.jsx | 5 ++++- unleash-server/server.js | 8 ++++++++ unleash-server/webpack.config.js | 28 ++++++++++++++++++++++++++++ 8 files changed, 56 insertions(+), 18 deletions(-) create mode 100644 unleash-server/webpack.config.js diff --git a/.gitignore b/.gitignore index 0d7d7662db..b34b254cde 100644 --- a/.gitignore +++ b/.gitignore @@ -34,7 +34,7 @@ node_modules # Java target -# Local config -/unleash-server/config/database.json +# webpack output +/unleash-server/public/js/bundle.js .DS_Store \ No newline at end of file diff --git a/.jshintrc b/.jshintrc index ee86d71cff..5688a3d2a1 100644 --- a/.jshintrc +++ b/.jshintrc @@ -11,9 +11,7 @@ "after" : false, "beforeEach": false, "afterEach" : false, - "contain" : false, - "React" : false, - "reqwest" : false + "contain" : false }, "bitwise" : true, diff --git a/finnbuild.json b/finnbuild.json index 2fd91b8a4b..466ce6710b 100644 --- a/finnbuild.json +++ b/finnbuild.json @@ -9,8 +9,7 @@ }, "tasks": { "deploy": [ - {"command": "cd unleash-server && npm install"}, - {"command": "cd unleash-server && npm test"}, + {"command": "cd unleash-server && npm install && npm test && npm run build"}, {"command": "cd unleash-server && tar -cvzf unleash-server.tar.gz --exclude=unleash-server.tar.gz --exclude=.git *"}, { "command": "cd unleash-server && mvn deploy:deploy-file -Durl=http://mavenproxy.finntech.no/finntech-internal-snapshot/ -DrepositoryId=finntech-internal-snapshot -Dfile=unleash-server.tar.gz -DgroupId=no.finntech.unleash -DartifactId=unleash-server -Dversion=0.1337-SNAPSHOT -Dpackaging=tar.gz", @@ -33,11 +32,11 @@ } ] }, - + ], "default": [ - {"command": "cd unleash-server && npm install"}, - {"command": "cd unleash-server && npm test"} + {"command": "cd unleash-server && npm install && npm test"}, + ] } } diff --git a/unleash-server/package.json b/unleash-server/package.json index ec5c7d0429..8f5bed7838 100644 --- a/unleash-server/package.json +++ b/unleash-server/package.json @@ -17,8 +17,9 @@ }, "private": true, "scripts": { - "start": "node server.js", - "dev": "NODE_ENV=local supervisor --ignore ./node_modules/,./public/js server.js", + "start": "NODE_ENV=production node server.js", + "build": "./node_modules/.bin/webpack", + "dev": "NODE_ENV=development supervisor --ignore ./node_modules/,./public/js server.js", "test": "jshint server.js lib test && jsxhint public/js/*.jsx && mocha test test/* && npm run coverage", "tdd": "mocha --watch test test/*", "test-bamboo-ci": "mocha test test/*", @@ -44,12 +45,17 @@ "coveralls": "^2.11.2", "istanbul": "0.3.2", "jshint": "2.5.2", + "jsx-loader": "^0.12.0", "jsxhint": "0.4.15", "mocha": "1.20.1", "mocha-lcov-reporter": "0.0.1", "mockery": "1.4.0", + "react": "^0.12.0", + "reqwest": "^1.1.4", "supertest": "0.13.0", "supervisor": "0.6.0", + "webpack": "^1.4.9", + "webpack-dev-middleware": "^1.0.11", "xmlbuilder": "2.4.4" } } diff --git a/unleash-server/public/index.html b/unleash-server/public/index.html index e2efb37724..231d39cc8f 100644 --- a/unleash-server/public/index.html +++ b/unleash-server/public/index.html @@ -9,13 +9,9 @@ - - - -
Loading...
- + diff --git a/unleash-server/public/js/unleash.jsx b/unleash-server/public/js/unleash.jsx index 9bdbe7f2fa..468b79e86d 100644 --- a/unleash-server/public/js/unleash.jsx +++ b/unleash-server/public/js/unleash.jsx @@ -1,5 +1,8 @@ /* jshint quotmark:false */ +var React = require('react'); +var reqwest = require('reqwest'); + // Unleash // - Menu // - FeatureList @@ -36,7 +39,7 @@ var Menu = React.createClass({ render: function() { return ( ); diff --git a/unleash-server/server.js b/unleash-server/server.js index d195afd923..3c27567ecf 100644 --- a/unleash-server/server.js +++ b/unleash-server/server.js @@ -12,6 +12,14 @@ var express = require('express'), if(app.get('env') === 'development') { app.use(require('errorhandler')()); + + var webpack = require('webpack'), + webpackDevMiddleware = require('webpack-dev-middleware'), + webpackConfig = require('./webpack.config'), + compiler = webpack(webpackConfig), + config = { publicPath: '/js' }; + + app.use(baseUriPath, webpackDevMiddleware(compiler, config)); } app.use(validator([])); diff --git a/unleash-server/webpack.config.js b/unleash-server/webpack.config.js new file mode 100644 index 0000000000..4fd587cfca --- /dev/null +++ b/unleash-server/webpack.config.js @@ -0,0 +1,28 @@ +// docs: http://webpack.github.io/docs/configuration.html + +module.exports = { + + context: __dirname + '/public', + entry: './js/unleash', + + output: { + path: __dirname + '/public/js', + filename: 'bundle.js', + publicPath: '/js/' + }, + + resolve: { + extensions: ['', '.js', '.jsx'] + }, + + module: { + loaders: [ + { test: /\.jsx$/, loader: 'jsx' } + ] + }, + + externals: { + // stuff not in node_modules can be resolved here. + } + +}; \ No newline at end of file