aboutsummaryrefslogtreecommitdiffstats
path: root/server
diff options
context:
space:
mode:
authorStas Vilchik <vilchiks@gmail.com>2016-04-05 14:16:55 +0200
committerStas Vilchik <vilchiks@gmail.com>2016-04-05 17:23:44 +0200
commit9cc12455020fbb47e606c3e7152a291cf3294299 (patch)
tree1739d5f7eb9ae84068906c5c44cd665b11a7b3fe /server
parent81334817358787b15faa4ceb72ac6de85f077dfc (diff)
downloadsonarqube-9cc12455020fbb47e606c3e7152a291cf3294299.tar.gz
sonarqube-9cc12455020fbb47e606c3e7152a291cf3294299.zip
create web development server
Diffstat (limited to 'server')
-rw-r--r--server/sonar-web/.babelrc17
-rw-r--r--server/sonar-web/devServer.js56
-rw-r--r--server/sonar-web/package.json9
-rw-r--r--server/sonar-web/webpack.config.dev.js32
-rw-r--r--server/sonar-web/webpack.config.js3
5 files changed, 113 insertions, 4 deletions
diff --git a/server/sonar-web/.babelrc b/server/sonar-web/.babelrc
index 8c43a477c18..0ecf1664f9c 100644
--- a/server/sonar-web/.babelrc
+++ b/server/sonar-web/.babelrc
@@ -1,6 +1,17 @@
{
"presets": ["es2015", "stage-0", "react"],
- "ignore": [
- "**/libs/**"
- ]
+ "ignore": [
+ "**/libs/**"
+ ],
+ "env": {
+ "hot": {
+ "plugins": [["react-transform", {
+ "transforms": [{
+ "transform": "react-transform-hmr",
+ "imports": ["react"],
+ "locals": ["module"]
+ }]
+ }]]
+ }
+ }
}
diff --git a/server/sonar-web/devServer.js b/server/sonar-web/devServer.js
new file mode 100644
index 00000000000..837e83ef104
--- /dev/null
+++ b/server/sonar-web/devServer.js
@@ -0,0 +1,56 @@
+/*
+ * SonarQube
+ * Copyright (C) 2009-2016 SonarSource SA
+ * mailto:contact AT sonarsource DOT com
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+ /* eslint no-var: 0 */
+ /* eslint no-console: 0 */
+ /* eslint object-shorthand: 0 */
+ /* jscs:disable requireEnhancedObjectLiterals */
+var url = require('url');
+var express = require('express');
+var proxy = require('express-http-proxy');
+var webpack = require('webpack');
+var config = require('./webpack.config.dev');
+
+var app = express();
+var compiler = webpack(config);
+
+var PORT = process.env.PORT || 8080;
+var API_HOST = process.env.API_HOST || 'http://localhost:9000';
+
+app.use(require('webpack-dev-middleware')(compiler, {
+ noInfo: true,
+ publicPath: config.output.publicPath
+}));
+
+app.use(require('webpack-hot-middleware')(compiler));
+
+app.all('*', proxy(API_HOST, {
+ forwardPath: function (req) {
+ return url.parse(req.url).path;
+ }
+}));
+
+app.listen(PORT, 'localhost', function (err) {
+ if (err) {
+ console.log(err);
+ return;
+ }
+
+ console.log('Listening at http://localhost:' + PORT);
+});
diff --git a/server/sonar-web/package.json b/server/sonar-web/package.json
index bedbac551af..7393b7bc96a 100644
--- a/server/sonar-web/package.json
+++ b/server/sonar-web/package.json
@@ -10,6 +10,7 @@
"babel-core": "6.3.17",
"babel-eslint": "5.0.0",
"babel-loader": "6.2.0",
+ "babel-plugin-react-transform": "2.0.2",
"babel-polyfill": "6.3.14",
"babel-preset-es2015": "6.3.13",
"babel-preset-react": "6.3.13",
@@ -30,6 +31,8 @@
"eslint-plugin-react": "4.0.0",
"event-stream": "3.3.1",
"expose-loader": "0.7.1",
+ "express": "4.13.4",
+ "express-http-proxy": "0.6.0",
"glob": "5.0.15",
"gulp": "3.9.0",
"gulp-autoprefixer": "3.1.0",
@@ -60,6 +63,7 @@
"react-router": "2.0.0",
"react-router-redux": "4.0.0",
"react-select": "1.0.0-beta6",
+ "react-transform-hmr": "1.0.4",
"redux": "3.3.1",
"redux-logger": "2.2.1",
"redux-simple-router": "1.0.1",
@@ -72,6 +76,8 @@
"vinyl-buffer": "1.0.0",
"vinyl-source-stream": "1.1.0",
"webpack": "1.12.9",
+ "webpack-dev-middleware": "1.6.1",
+ "webpack-hot-middleware": "2.10.0",
"whatwg-fetch": "0.10.0",
"yargs": "3.27.0"
},
@@ -80,7 +86,8 @@
"build": "gulp build",
"test": "mocha --opts tests/mocha.opts tests",
"coverage": "babel-node node_modules/.bin/isparta cover --root 'src/main/js' --include-all-sources --excludes '**/libs/**' --dir 'target/coverage' node_modules/.bin/_mocha -- --opts tests/mocha.opts tests",
- "lint": "eslint src/main/js && jscs src/main/js"
+ "lint": "eslint src/main/js && jscs src/main/js",
+ "dev": "NODE_ENV=hot node devServer"
},
"engines": {
"node": ">=4"
diff --git a/server/sonar-web/webpack.config.dev.js b/server/sonar-web/webpack.config.dev.js
new file mode 100644
index 00000000000..f0fc980c360
--- /dev/null
+++ b/server/sonar-web/webpack.config.dev.js
@@ -0,0 +1,32 @@
+/*
+ * SonarQube
+ * Copyright (C) 2009-2016 SonarSource SA
+ * mailto:contact AT sonarsource DOT com
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+/* eslint no-var: 0 */
+var webpack = require('webpack');
+
+var config = require('./webpack.config');
+
+config.devtool = 'cheap-module-eval-source-map';
+config.output.publicPath = '/js/bundles/';
+config.entry.vendor.unshift('webpack-hot-middleware/client');
+config.plugins = [].concat(config.plugins, [
+ new webpack.HotModuleReplacementPlugin()
+]);
+
+module.exports = config;
diff --git a/server/sonar-web/webpack.config.js b/server/sonar-web/webpack.config.js
index a441f2b2728..4589431a6b1 100644
--- a/server/sonar-web/webpack.config.js
+++ b/server/sonar-web/webpack.config.js
@@ -1,3 +1,6 @@
+/* eslint no-var: 0 */
+/* eslint object-shorthand: 0 */
+/* jscs:disable requireEnhancedObjectLiterals */
var path = require('path');
var webpack = require('webpack');
var autoprefixer = require('autoprefixer');