|
1 | | -const path = require('path'); |
2 | | -const glob = require('glob'); |
3 | | -const HardSourceWebpackPlugin = require('hard-source-webpack-plugin'); |
4 | | -const MiniCssExtractPlugin = require('mini-css-extract-plugin'); |
5 | | -const TerserPlugin = require('terser-webpack-plugin'); |
6 | | -const OptimizeCSSAssetsPlugin = require('optimize-css-assets-webpack-plugin'); |
7 | | -const CopyWebpackPlugin = require('copy-webpack-plugin'); |
| 1 | +const path = require("path"); |
| 2 | +const glob = require("glob"); |
| 3 | +const MiniCssExtractPlugin = require("mini-css-extract-plugin"); |
| 4 | +const TerserPlugin = require("terser-webpack-plugin"); |
| 5 | +const CssMinimizerPlugin = require("css-minimizer-webpack-plugin"); |
| 6 | +const CopyWebpackPlugin = require("copy-webpack-plugin"); |
8 | 7 |
|
9 | 8 | module.exports = (env, options) => { |
10 | | - const devMode = options.mode !== 'production'; |
| 9 | + const devMode = options.mode !== "production"; |
11 | 10 |
|
12 | 11 | return { |
13 | 12 | optimization: { |
14 | 13 | minimizer: [ |
15 | | - new TerserPlugin({ cache: true, parallel: true, sourceMap: devMode }), |
16 | | - new OptimizeCSSAssetsPlugin({}) |
17 | | - ] |
| 14 | + new TerserPlugin({ parallel: true }), |
| 15 | + new CssMinimizerPlugin(), |
| 16 | + ], |
18 | 17 | }, |
19 | 18 | entry: { |
20 | | - 'app': glob.sync('./vendor/**/*.js').concat(['./js/app.js']) |
| 19 | + app: glob.sync("./vendor/**/*.js").concat(["./js/app.js"]), |
21 | 20 | }, |
22 | 21 | output: { |
23 | | - filename: '[name].js', |
24 | | - path: path.resolve(__dirname, '../priv/static/js'), |
25 | | - publicPath: '/js/' |
| 22 | + filename: "[name].js", |
| 23 | + path: path.resolve(__dirname, "../priv/static/js"), |
| 24 | + publicPath: "/js/", |
26 | 25 | }, |
27 | | - devtool: devMode ? 'eval-cheap-module-source-map' : undefined, |
| 26 | + devtool: devMode ? "eval-cheap-module-source-map" : undefined, |
28 | 27 | module: { |
29 | 28 | rules: [ |
30 | 29 | { |
31 | 30 | test: /\.js$/, |
32 | 31 | exclude: /node_modules/, |
33 | 32 | use: { |
34 | | - loader: 'babel-loader' |
35 | | - } |
| 33 | + loader: "babel-loader", |
| 34 | + }, |
36 | 35 | }, |
37 | 36 | { |
38 | 37 | test: /\.[s]?css$/, |
39 | | - use: [ |
40 | | - MiniCssExtractPlugin.loader, |
41 | | - 'css-loader', |
42 | | - 'sass-loader', |
43 | | - ], |
44 | | - } |
45 | | - ] |
| 38 | + use: [MiniCssExtractPlugin.loader, "css-loader", "sass-loader"], |
| 39 | + }, |
| 40 | + ], |
46 | 41 | }, |
47 | 42 | plugins: [ |
48 | | - new MiniCssExtractPlugin({ filename: '../css/app.css' }), |
49 | | - new CopyWebpackPlugin([{ from: 'static/', to: '../' }]) |
50 | | - ] |
51 | | - .concat(devMode ? [new HardSourceWebpackPlugin()] : []) |
52 | | - } |
| 43 | + new MiniCssExtractPlugin({ filename: "../css/app.css" }), |
| 44 | + new CopyWebpackPlugin({ |
| 45 | + patterns: [{ from: "static/", to: "../" }], |
| 46 | + }), |
| 47 | + ], |
| 48 | + }; |
53 | 49 | }; |
0 commit comments