generated from DEFRA/ffc-demo-web
-
Notifications
You must be signed in to change notification settings - Fork 0
/
webpack.config.js
100 lines (95 loc) · 2.51 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
89
90
91
92
93
94
95
96
97
98
99
100
import { dirname, resolve } from 'path'
import { fileURLToPath } from 'url'
import { CleanWebpackPlugin } from 'clean-webpack-plugin'
import HtmlWebpackPlugin from 'html-webpack-plugin'
import MiniCssExtractPlugin from 'mini-css-extract-plugin'
const __filename = fileURLToPath(import.meta.url)
const __dirname = dirname(__filename)
const isDev = process.env.NODE_ENV === 'development' || process.env.NODE_ENV === 'test'
console.log(`Running webpack in ${isDev ? 'development' : 'production'} mode`)
const pack = {
entry: {
core: './app/frontend/css/index.js',
cookies: './app/frontend/js/cookies.js'
},
mode: isDev ? 'development' : 'production',
module: {
rules: [
{
test: /\.(?:s[ac]|c)ss$/i,
use: [
'style-loader',
{
loader: MiniCssExtractPlugin.loader,
options: {
publicPath: '../',
esModule: false
}
},
'css-loader',
'resolve-url-loader',
{
loader: 'sass-loader',
options: {
sourceMap: isDev,
sassOptions: {
outputStyle: 'compressed'
}
}
}
],
resolve: {
modules: [resolve(__dirname, 'node_modules'), 'node_modules']
}
},
{
test: /\.(png|svg|jpg|gif)$/,
use: {
loader: 'file-loader',
options: {
outputPath: 'images/'
}
},
resolve: {
modules: [resolve(__dirname, 'node_modules'), 'node_modules']
}
},
{
test: /\.(woff|woff2|eot|ttf|otf)$/,
use: {
loader: 'file-loader',
options: {
outputPath: 'fonts/'
}
},
resolve: {
modules: [resolve(__dirname, 'node_modules'), 'node_modules']
}
}
]
},
output: {
filename: 'js/[name].[fullhash].js',
path: resolve(__dirname, 'app/dist'),
library: '[name]'
},
plugins: [
new CleanWebpackPlugin(),
new HtmlWebpackPlugin({
inject: false,
filename: '../views/_layout.njk',
template: 'app/views/_layout.template.njk',
chunks: ['core']
}),
new HtmlWebpackPlugin({
inject: false,
filename: '../views/cookies/_cookie-banner.njk',
template: 'app/views/cookies/_cookie-banner.template.njk',
chunks: ['cookies']
}),
new MiniCssExtractPlugin({
filename: 'css/[name].[fullhash].css'
})
]
}
export default pack