summaryrefslogtreecommitdiffstats
path: root/webapp/webpack.config-test.js
diff options
context:
space:
mode:
Diffstat (limited to 'webapp/webpack.config-test.js')
-rw-r--r--webapp/webpack.config-test.js131
1 files changed, 131 insertions, 0 deletions
diff --git a/webapp/webpack.config-test.js b/webapp/webpack.config-test.js
new file mode 100644
index 000000000..aaeefeb8c
--- /dev/null
+++ b/webapp/webpack.config-test.js
@@ -0,0 +1,131 @@
+const webpack = require('webpack');
+const path = require('path');
+const ExtractTextPlugin = require('extract-text-webpack-plugin');
+const CopyWebpackPlugin = require('copy-webpack-plugin');
+const nodeExternals = require('webpack-node-externals');
+
+const htmlExtract = new ExtractTextPlugin('html', 'root.html');
+
+const NPM_TARGET = process.env.npm_lifecycle_event; //eslint-disable-line no-process-env
+
+var DEV = true;
+var FULLMAP = false;
+if (NPM_TARGET === 'run' || NPM_TARGET === 'run-fullmap') {
+ DEV = true;
+ if (NPM_TARGET === 'run-fullmap') {
+ FULLMAP = true;
+ }
+}
+
+var config = {
+ target: 'node',
+ externals: [nodeExternals()],
+ module: {
+ loaders: [
+ {
+ test: /\.jsx?$/,
+ loader: 'babel',
+ exclude: /(node_modules|non_npm_dependencies)/,
+ query: {
+ presets: ['react', 'es2015-webpack', 'stage-0'],
+ plugins: ['transform-runtime'],
+ cacheDirectory: DEV
+ }
+ },
+ {
+ test: /\.json$/,
+ loader: 'json'
+ },
+ {
+ test: /(node_modules|non_npm_dependencies)\/.+\.(js|jsx)$/,
+ loader: 'imports',
+ query: {
+ $: 'jquery',
+ jQuery: 'jquery'
+ }
+ },
+ {
+ test: /\.scss$/,
+ loaders: ['style', 'css', 'sass']
+ },
+ {
+ test: /\.css$/,
+ loaders: ['style', 'css']
+ },
+ {
+ test: /\.(png|eot|tiff|svg|woff2|woff|ttf|gif|mp3|jpg)$/,
+ loader: 'file',
+ query: {
+ name: 'files/[hash].[ext]'
+ }
+ },
+ {
+ test: /\.html$/,
+ loader: htmlExtract.extract('html?attrs=link:href')
+ }
+ ]
+ },
+ sassLoader: {
+ includePaths: ['node_modules/compass-mixins/lib']
+ },
+ plugins: [
+ new webpack.ProvidePlugin({
+ 'window.jQuery': 'jquery'
+ }),
+ htmlExtract,
+ new CopyWebpackPlugin([
+ {from: 'images/emoji', to: 'emoji'}
+ ]),
+ new webpack.LoaderOptionsPlugin({
+ minimize: !DEV,
+ debug: false
+ })
+ ],
+ resolve: {
+ alias: {
+ jquery: 'jquery/dist/jquery'
+ },
+ modules: [
+ 'node_modules',
+ 'non_npm_dependencies',
+ path.resolve(__dirname)
+ ]
+ }
+};
+
+// Development mode configuration
+if (DEV) {
+ if (FULLMAP) {
+ config.devtool = 'source-map';
+ } else {
+ config.devtool = 'eval-cheap-module-source-map';
+ }
+}
+
+// Production mode configuration
+if (!DEV) {
+ config.devtool = 'source-map';
+ config.plugins.push(
+ new webpack.optimize.UglifyJsPlugin({
+ 'screw-ie8': true,
+ mangle: {
+ toplevel: false
+ },
+ compress: {
+ warnings: false
+ },
+ comments: false
+ })
+ );
+ config.plugins.push(
+ new webpack.optimize.AggressiveMergingPlugin()
+ );
+ config.plugins.push(
+ new webpack.optimize.OccurrenceOrderPlugin(true)
+ );
+ config.plugins.push(
+ new webpack.optimize.DedupePlugin()
+ );
+}
+
+module.exports = config;