aboutsummaryrefslogtreecommitdiff
path: root/webpack.config.js
blob: e1f654debc7ecde467314d73768706b4c9ba997f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
var path = require('path');
var glob = require('glob-all');
var webpack = require('webpack');

var UglifyJsPlugin = require("uglifyjs-webpack-plugin");
var PurifyCSSPlugin = require('purifycss-webpack');
var MiniCssExtractPlugin = require("mini-css-extract-plugin");
var OptimizeCSSAssetsPlugin = require("optimize-css-assets-webpack-plugin");

module.exports = {
    mode: 'production',
    entry: { app: __dirname + '/assets/app.js' },
    output: {
        path: __dirname + '/public/dist',
        filename: '[name].js'
    },

    module: {
        rules: [
            {
              test: /\.css$/,
              use: 
              [ 
                { loader: MiniCssExtractPlugin.loader }, 
                "css-loader"
              ]

            },

            {
              test: /\.(png|jpg|gif)$/,
              use: 
              [ 
                { 
                  loader: 'url-loader', 
                  options: { limit: 8192 } 
                }
              ]
            }
        ]
    },

    optimization: {
      minimizer: [

        new UglifyJsPlugin({
          cache: true,
          parallel: true,
          sourceMap: true
        }),

        new OptimizeCSSAssetsPlugin({
          cssProcessor: require('cssnano'),
          cssProcessorPluginOptions: {
            preset: ['default', { discardComments: { removeAll: true } }],
          },
        canPrint: true})

      ]
    },

    plugins: [

        new MiniCssExtractPlugin({
          filename: '[name].css'
        }),

        new PurifyCSSPlugin({
        
        purifyOptions: {
          whitelist: [ ]
        },

        paths: glob.sync([
          path.join(__dirname, '/app/views/*{.php,.html}'),
          path.join(__dirname, '/app/views/partials/*{.php,.html}'),
          path.join(__dirname, '/app/views/snippets/*{.php,.html}'),
          path.join(__dirname, '/app/public/post/*{.php,.html}')
          ]),
        })
    ]
};