/* eslint-disable */ const webpack = require('webpack'); const path = require('path'); const ExtractTextWebpackPlugin = require('extract-text-webpack-plugin'); /* * SplitChunksPlugin is enabled by default and replaced * deprecated CommonsChunkPlugin. It automatically identifies modules which * should be splitted of chunk by heuristics using module duplication count and * module category (i. e. node_modules). And splits the chunks… * * It is safe to remove "splitChunks" from the generated configuration * and was added as an educational example. * * https://webpack.js.org/plugins/split-chunks-plugin/ * */ /* * We've enabled UglifyJSPlugin for you! This minifies your app * in order to load faster and run less javascript. * * https://github.com/webpack-contrib/uglifyjs-webpack-plugin * */ const UglifyJSPlugin = require('uglifyjs-webpack-plugin'); module.exports = { module: { rules: [ { loader: 'babel-loader', options: { plugins: ['syntax-dynamic-import'], presets: [ [ '@babel/preset-env', { modules: false } ] ] }, test: /\.js$/ }, { test: /\.css$/, use: ExtractTextWebpackPlugin.extract({ fallback: "style-loader", use: "css-loader" }) }, { test: /\.scss$/, use: ExtractTextWebpackPlugin.extract({ fallback: 'style-loader', use: ['css-loader', 'sass-loader', 'postcss-loader'] }), exclude: /node_modules/ } ] }, entry: { main: [ path.resolve(__dirname, 'frontend/src', 'main.js'), ], vendor: [ path.resolve(__dirname, 'frontend/vendor', 'main.js'), ], polyfills: [ path.resolve(__dirname, 'frontend/polyfills', 'main.js'), ], }, plugins: [ new ExtractTextWebpackPlugin({ filename: 'css/[name].css' }) ], output: { chunkFilename: 'js/[name].[chunkname].js', filename: 'js/[name].js', path: path.resolve(__dirname, 'static', 'bundles') }, mode: 'development', optimization: { splitChunks: { cacheGroups: { vendors: { priority: -10, test: /[\\/]node_modules[\\/]/ } }, chunks: 'async', minChunks: 1, minSize: 30000, name: true } } };