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