aboutsummaryrefslogtreecommitdiffstats
path: root/server/sonar-web/config/vsts.webpack.config.js
diff options
context:
space:
mode:
authorGrégoire Aubert <gregoire.aubert@sonarsource.com>2018-03-06 17:41:23 +0100
committerSonarTech <sonartech@sonarsource.com>2018-03-26 20:20:57 +0200
commitcb0a23c978efcc296cf29837c9e6e1a657403404 (patch)
tree7e408a33f49254e99e47753c9d7b272c269c53c6 /server/sonar-web/config/vsts.webpack.config.js
parentb4125add7a55db6d2dc71a1bd0b2cadbe5ff7887 (diff)
downloadsonarqube-cb0a23c978efcc296cf29837c9e6e1a657403404.tar.gz
sonarqube-cb0a23c978efcc296cf29837c9e6e1a657403404.zip
VSTS-141 Add VSTS Quality widget
Diffstat (limited to 'server/sonar-web/config/vsts.webpack.config.js')
-rw-r--r--server/sonar-web/config/vsts.webpack.config.js110
1 files changed, 110 insertions, 0 deletions
diff --git a/server/sonar-web/config/vsts.webpack.config.js b/server/sonar-web/config/vsts.webpack.config.js
new file mode 100644
index 00000000000..dfab0102c08
--- /dev/null
+++ b/server/sonar-web/config/vsts.webpack.config.js
@@ -0,0 +1,110 @@
+/*
+ * SonarQube
+ * Copyright (C) 2009-2018 SonarSource SA
+ * mailto:info 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-disable import/no-extraneous-dependencies */
+const path = require('path');
+const HtmlWebpackPlugin = require('html-webpack-plugin');
+const CopyWebpackPlugin = require('copy-webpack-plugin');
+const InterpolateHtmlPlugin = require('react-dev-utils/InterpolateHtmlPlugin');
+const webpack = require('webpack');
+const paths = require('./paths');
+const utils = require('./utils');
+
+module.exports = ({ production = true, fast = false }) => ({
+ bail: production,
+
+ devtool: production ? (fast ? false : 'source-map') : 'cheap-module-source-map',
+ resolve: {
+ // Add '.ts' and '.tsx' as resolvable extensions.
+ extensions: ['.ts', '.tsx', '.js', '.json']
+ },
+ entry: {
+ vsts: [
+ !production && require.resolve('react-dev-utils/webpackHotDevClient'),
+ !production && require.resolve('react-error-overlay'),
+ 'react',
+ 'react-dom',
+ './src/main/js/app/integration/vsts/index.js'
+ ].filter(Boolean)
+ },
+ output: {
+ path: paths.vstsBuild,
+ pathinfo: !production,
+ publicPath: '/integration/vsts/',
+ filename: production ? 'js/[name].[chunkhash:8].js' : 'js/[name].js',
+ chunkFilename: production ? 'js/[name].[chunkhash:8].chunk.js' : 'js/[name].chunk.js'
+ },
+ module: {
+ rules: [
+ {
+ test: /\.js$/,
+ loader: 'babel-loader',
+ exclude: /(node_modules|libs)/
+ },
+ {
+ test: /\.tsx?$/,
+ use: [
+ {
+ loader: 'awesome-typescript-loader',
+ options: {
+ transpileOnly: true,
+ useBabel: true,
+ useCache: true
+ }
+ }
+ ]
+ },
+ {
+ test: /\.css$/,
+ use: ['style-loader', utils.cssLoader({ production, fast }), utils.postcssLoader()]
+ }
+ ].filter(Boolean)
+ },
+ plugins: [
+ !production && new InterpolateHtmlPlugin({ WEB_CONTEXT: '' }),
+
+ new HtmlWebpackPlugin({
+ inject: false,
+ template: paths.vstsHtml,
+ minify: utils.minifyParams({ production, fast })
+ }),
+
+ new webpack.DefinePlugin({
+ 'process.env.NODE_ENV': JSON.stringify(production ? 'production' : 'development')
+ }),
+
+ new CopyWebpackPlugin([
+ {
+ from: './src/main/js/libs/third-party/VSS.SDK.min.js',
+ to: 'js/'
+ }
+ ]),
+
+ production &&
+ !fast &&
+ new webpack.optimize.UglifyJsPlugin({
+ sourceMap: true,
+ compress: { screw_ie8: true, warnings: false },
+ mangle: { screw_ie8: true },
+ output: { comments: false, screw_ie8: true }
+ }),
+
+ !production && new webpack.HotModuleReplacementPlugin()
+ ].filter(Boolean)
+});