From 2c56228da9b5a6e5ca9bd17b6f726c138f0bfae6 Mon Sep 17 00:00:00 2001
From: "J.-S. Caux" <J.S.Caux@uva.nl>
Date: Sun, 24 Nov 2019 21:32:02 +0100
Subject: [PATCH] Saved by Jorran: add BundleTracker

---
 .bootstraprc           |   1 -
 webpack.dev.config.js  | 107 +++++++++++++++--------------------------
 webpack.prod.config.js |  79 +++++++++++++++---------------
 webpack.test.config.js |  13 ++++-
 4 files changed, 88 insertions(+), 112 deletions(-)

diff --git a/.bootstraprc b/.bootstraprc
index f6f95d0c8..fffdb3322 100644
--- a/.bootstraprc
+++ b/.bootstraprc
@@ -10,7 +10,6 @@
 	"postcss-loader",
         "sass-loader",
     ],
-    "extractStyles": true,
     "styles": {
         # First tables, due to self dependencies
         "tables": true,
diff --git a/webpack.dev.config.js b/webpack.dev.config.js
index 33783e227..a6d59c320 100644
--- a/webpack.dev.config.js
+++ b/webpack.dev.config.js
@@ -1,8 +1,6 @@
 var webpack = require("webpack");
 var BundleTracker = require('webpack-bundle-tracker');
 const { CleanWebpackPlugin } = require('clean-webpack-plugin');
-const MiniCssExtractPlugin = require('mini-css-extract-plugin');
-var glob = require("glob");
 var path_bundles = __dirname + '/static_bundles/bundles';
 
 module.exports = {
@@ -10,6 +8,7 @@ module.exports = {
     context: __dirname,
     entry: {
         main: [
+	    "tether",
             "bootstrap-loader",
             "./scipost/static/scipost/assets/js/dynamic_loading.js",
             "./scipost/static/scipost/assets/js/scripts.js",
@@ -24,83 +23,53 @@ module.exports = {
         publicPath: '/static/bundles/',
         filename: "js/[name]-[hash].js",
     },
-    module: {
-        // loaders: [
-        //     {
-        //         test: /\.css$/,
-        //         // loader: ExtractTextPlugin.extract({
-        //         //     fallback: "style-loader",
-        //         //     use: "css-loader",
-        //         // })
-	// 	use: [MiniCssExtractPlugin.loader, 'css-loader'],
-        //     },
-        //     {
-        //         test: /\.less$/,
-        //         // loader: ExtractTextPlugin.extract({
-        //         //     fallback: "style-loader",
-        //         //     use: "css-loader!less-loader"
-        //         // })
-	// 	use: [MiniCssExtractPlugin.loader, 'css-loader!less-loader'],
-        //     },
-        //     {
-        //         test: /\.scss$/,
-        //         // loader: ExtractTextPlugin.extract({
-        //         //     fallback: "style-loader",
-        //         //     use: "css-loader!sass-loader"
-        //         // })
-	// 	use: [MiniCssExtractPlugin.loader, 'css-loader!sass-loader'],
-        //     }
-        // ],
-	rules: [
-	    {
-		test: require.resolve('jquery'),
-		use: [{
-		    loader: 'expose-loader',
-		    options: 'jQuery'
-		},{
-		loader: 'expose-loader',
-		options: '$'
-		}]
-	    },
-            {
-                test: /\.css$/,
-	    	use: [MiniCssExtractPlugin.loader, 'css-loader', 'postcss-loader'],
-            },
-            // {
-            //     test: /\.less$/,
-	    // 	use: [MiniCssExtractPlugin.loader, 'less-loader'],
-            // },
-            {
-                test: /\.scss$/,
-	    	use: [MiniCssExtractPlugin.loader, 'sass-loader'],
-            }
-	]
-    },
     plugins: [
+	new BundleTracker({
+	    filename: './webpack-stats.json'
+	}),
         new webpack.ProvidePlugin({
             $: 'jquery',
             jQuery: 'jquery',
+	    'window.jQuery': 'jquery',
             Tether: 'tether',
             'window.Tether': 'tether',
+            Popper: ['popper.js', 'default'],
+	    Alert: "exports-loader?Alert!bootstrap/js/dist/alert",
+	    Button: "exports-loader?Button!bootstrap/js/dist/button",
+	    Carousel: "exports-loader?Carousel!bootstrap/js/dist/carousel",
+	    Collapse: "exports-loader?Collapse!bootstrap/js/dist/collapse",
+	    Dropdown: "exports-loader?Dropdown!bootstrap/js/dist/dropdown",
+	    Modal: "exports-loader?Modal!bootstrap/js/dist/modal",
+	    Popover: "exports-loader?Popover!bootstrap/js/dist/popover",
+	    Scrollspy: "exports-loader?Scrollspy!bootstrap/js/dist/scrollspy",
+	    Tab: "exports-loader?Tab!bootstrap/js/dist/tab",
             Tooltip: "exports-loader?Tooltip!bootstrap/js/dist/tooltip",
             Util: 'exports-loader?Util!bootstrap/js/dist/util',
-            Popper: ['popper.js', 'default'],
         }),
-        new BundleTracker({
-            filename: './webpack-stats.json'
-        }),
-	new MiniCssExtractPlugin({
-            filename: 'css/[name]-[hash].css',
-        }),
-        new CleanWebpackPlugin(
-	    // ['css', 'js'], {
-            // root: path_bundles,
-            // dry: false,
-            // exclude: []
-            // }
-	),
-        // new webpack.optimize.UglifyJsPlugin(),
+        new CleanWebpackPlugin(),
         new webpack.optimize.OccurrenceOrderPlugin(),
         new webpack.optimize.AggressiveMergingPlugin()
     ],
+    module: {
+	rules: [
+	    {
+	    	test: require.resolve('jquery'),
+	    	use: [{
+	    	    loader: 'expose-loader',
+	    	    options: 'jQuery'
+	    	},{
+	    	loader: 'expose-loader',
+	    	options: '$'
+	    	}]
+	    },
+            {
+                test: /\.css$/,
+	    	use: ['style-loader', 'css-loader', 'postcss-loader'],
+            },
+            {
+                test: /\.scss$/,
+	    	use: ['style-loader', 'css-loader', 'postcss-loader', 'sass-loader'],
+            }
+	]
+    },
 }
diff --git a/webpack.prod.config.js b/webpack.prod.config.js
index fe1a21535..332e66e51 100644
--- a/webpack.prod.config.js
+++ b/webpack.prod.config.js
@@ -1,14 +1,14 @@
 var webpack = require("webpack");
 var BundleTracker = require('webpack-bundle-tracker');
 var CleanWebpackPlugin = require('clean-webpack-plugin');
-var ExtractTextPlugin = require("extract-text-webpack-plugin");
-var glob = require("glob");
 var path_bundles = __dirname + '/static_bundles/bundles';
 
 module.exports = {
+    mode: 'production',
     context: __dirname,
     entry: {
         main: [
+	    "tether",
             "bootstrap-loader",
             "./scipost/static/scipost/assets/js/dynamic_loading.js",
             "./scipost/static/scipost/assets/js/scripts.js",
@@ -23,54 +23,53 @@ module.exports = {
         publicPath: 'https://scipost.org/static/bundles/',
         filename: "js/[name]-[hash].js",
     },
-    module: {
-        loaders: [
-            {
-                test: /\.css$/,
-                loader: ExtractTextPlugin.extract({
-                    fallback: "style-loader",
-                    use: "css-loader",
-                })
-            },
-            {
-                test: /\.less$/,
-                loader: ExtractTextPlugin.extract({
-                    fallback: "style-loader",
-                    use: "css-loader!less-loader"
-                })
-            },
-            {
-                test: /\.scss$/,
-                loader: ExtractTextPlugin.extract({
-                    fallback: "style-loader",
-                    use: "css-loader!sass-loader"
-                })
-            }
-        ]
-    },
     plugins: [
+	new BundleTracker({
+	    filename: './webpack-stats.json'
+	}),
         new webpack.ProvidePlugin({
             $: 'jquery',
             jQuery: 'jquery',
+	    'window.jQuery': 'jquery',
             Tether: 'tether',
             'window.Tether': 'tether',
+            Popper: ['popper.js', 'default'],
+	    Alert: "exports-loader?Alert!bootstrap/js/dist/alert",
+	    Button: "exports-loader?Button!bootstrap/js/dist/button",
+	    Carousel: "exports-loader?Carousel!bootstrap/js/dist/carousel",
+	    Collapse: "exports-loader?Collapse!bootstrap/js/dist/collapse",
+	    Dropdown: "exports-loader?Dropdown!bootstrap/js/dist/dropdown",
+	    Modal: "exports-loader?Modal!bootstrap/js/dist/modal",
+	    Popover: "exports-loader?Popover!bootstrap/js/dist/popover",
+	    Scrollspy: "exports-loader?Scrollspy!bootstrap/js/dist/scrollspy",
+	    Tab: "exports-loader?Tab!bootstrap/js/dist/tab",
             Tooltip: "exports-loader?Tooltip!bootstrap/js/dist/tooltip",
             Util: 'exports-loader?Util!bootstrap/js/dist/util',
-            Popper: ['popper.js', 'default'],
         }),
-        new BundleTracker({
-            filename: './webpack-stats.json'
-        }),
-        new ExtractTextPlugin({
-            filename: 'css/[name]-[hash].css',
-        }),
-        new CleanWebpackPlugin(['css', 'js'], {
-            root: path_bundles,
-            dry: false,
-            exclude: []
-        }),
-        new webpack.optimize.UglifyJsPlugin(),
+        new CleanWebpackPlugin(),
         new webpack.optimize.OccurrenceOrderPlugin(),
         new webpack.optimize.AggressiveMergingPlugin()
     ],
+    module: {
+	rules: [
+	    {
+	    	test: require.resolve('jquery'),
+	    	use: [{
+	    	    loader: 'expose-loader',
+	    	    options: 'jQuery'
+	    	},{
+	    	loader: 'expose-loader',
+	    	options: '$'
+	    	}]
+	    },
+            {
+                test: /\.css$/,
+	    	use: ['style-loader', 'css-loader', 'postcss-loader'],
+            },
+            {
+                test: /\.scss$/,
+	    	use: ['style-loader', 'css-loader', 'postcss-loader', 'sass-loader'],
+            }
+	]
+    },
 }
diff --git a/webpack.test.config.js b/webpack.test.config.js
index 150d87484..a6d59c320 100644
--- a/webpack.test.config.js
+++ b/webpack.test.config.js
@@ -1,8 +1,11 @@
-const webpack = require("webpack");
-const path_bundles = __dirname + '/static_bundles/bundles';
+var webpack = require("webpack");
+var BundleTracker = require('webpack-bundle-tracker');
+const { CleanWebpackPlugin } = require('clean-webpack-plugin');
+var path_bundles = __dirname + '/static_bundles/bundles';
 
 module.exports = {
     mode: 'development',
+    context: __dirname,
     entry: {
         main: [
 	    "tether",
@@ -21,6 +24,9 @@ module.exports = {
         filename: "js/[name]-[hash].js",
     },
     plugins: [
+	new BundleTracker({
+	    filename: './webpack-stats.json'
+	}),
         new webpack.ProvidePlugin({
             $: 'jquery',
             jQuery: 'jquery',
@@ -40,6 +46,9 @@ module.exports = {
             Tooltip: "exports-loader?Tooltip!bootstrap/js/dist/tooltip",
             Util: 'exports-loader?Util!bootstrap/js/dist/util',
         }),
+        new CleanWebpackPlugin(),
+        new webpack.optimize.OccurrenceOrderPlugin(),
+        new webpack.optimize.AggressiveMergingPlugin()
     ],
     module: {
 	rules: [
-- 
GitLab