-
Notifications
You must be signed in to change notification settings - Fork 29
/
webpack.config.js
88 lines (77 loc) · 2.08 KB
/
webpack.config.js
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
86
87
88
const path = require('path');
const CopyWebpackPlugin = require('copy-webpack-plugin');
const MiniCSSExtractPlugin = require('mini-css-extract-plugin');
const ImageminPlugin = require('imagemin-webpack-plugin').default;
const {CleanWebpackPlugin} = require('clean-webpack-plugin');
const wpPot = require('wp-pot');
const inProduction = ('production' === process.env.NODE_ENV);
const mode = inProduction ? 'production' : 'development';
const config = {
devtool: inProduction ? 'inline-source-map' : 'eval-cheap-module-source-map',
mode,
entry: {
'plausible-admin': ['./assets/src/css/admin/main.css', './assets/src/js/admin/main.js'],
'plausible-woocommerce-integration': ['./assets/src/js/integrations/woocommerce.js']
},
output: {
path: path.join(__dirname, './assets/dist/'),
filename: 'js/[name].js',
},
module: {
rules: [
// Tailwind CSS.
{
test: /\.css$/,
use: [
MiniCSSExtractPlugin.loader,
'css-loader',
'postcss-loader',
],
},
// Image files.
{
test: /\.(png|jpe?g|gif|svg)$/,
use: [
{
loader: 'file-loader',
options: {
name: 'images/[name].[ext]',
publicPath: '../',
},
},
],
},
],
},
// Plugins. Gotta have 'em.
plugins: [
// Removes the "dist" folder before building.
new CleanWebpackPlugin(),
new MiniCSSExtractPlugin({
filename: 'css/[name].css',
}),
new CopyWebpackPlugin(
{
patterns: [
{from: 'assets/src/images', to: 'images'},
],
}
),
],
};
if (inProduction) {
// Minify images.
// Must go after CopyWebpackPlugin above: https://github.com/Klathmon/imagemin-webpack-plugin#example-usage
config.plugins.push(new ImageminPlugin({test: /\.(jpe?g|png|gif|svg)$/i}));
// POT file.
wpPot({
package: 'Plausible Analytics',
domain: 'plausible-analytics',
destFile: 'languages/plausible-analytics.pot',
relativeTo: './',
src: ['./**/*.php', '!./includes/libraries/**/*', '!./vendor/**/*'],
bugReport: 'https://github.com/plausible/wordpress/issues/new',
team: 'Plausible Analytics Team <hello@plausible.io>',
});
}
module.exports = config;