-
Notifications
You must be signed in to change notification settings - Fork 2
/
razzle.extend.js
84 lines (79 loc) · 1.95 KB
/
razzle.extend.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
const makeLoaderFinder = require('razzle-dev-utils/makeLoaderFinder');
const fileLoaderFinder = makeLoaderFinder('file-loader');
const plugins = (defaultPlugins) => {
return [...defaultPlugins];
};
const modifyWebpackConfig = (config, { target, dev }, webpack) => {
const fileLoader = config.module.rules.find(fileLoaderFinder);
fileLoader.exclude = [
/@mdi\/svg\/.*\.svg$/,
/@material-design-icons\/svg\/filled\.svg$/,
/nsw-design-system-plone6\/.*\.svg$/,
...fileLoader.exclude,
];
const MDISVGLOADER = {
test: /@mdi\/svg\/.*\.svg$/,
use: [
{
loader: 'svg-loader',
},
{
loader: 'svgo-loader',
options: {
plugins: [
{ removeTitle: true },
{ convertPathData: false },
{ removeUselessStrokeAndFill: true },
{ removeViewBox: false },
],
},
},
],
};
const MATERIALICONSSVGLOADER = {
test: /@material-design-icons\/svg\/filled\.svg$/,
use: [
{
loader: 'svg-loader',
},
{
loader: 'svgo-loader',
options: {
plugins: [
{ removeTitle: true },
{ convertPathData: false },
{ removeUselessStrokeAndFill: true },
{ removeViewBox: false },
],
},
},
],
};
const NSWSVGLOEADER = {
test: /nsw-design-system-plone6\/.*\.svg$/,
use: [
{
loader: 'svg-loader',
},
{
loader: 'svgo-loader',
options: {
plugins: [
{ removeTitle: true },
{ convertPathData: false },
{ removeUselessStrokeAndFill: false },
{ removeViewBox: false },
],
},
},
],
};
webpack.module.rules.push(MDISVGLOADER);
webpack.module.rules.push(MATERIALICONSSVGLOADER);
webpack.module.rules.push(NSWSVGLOEADER);
return config;
};
module.exports = {
modify: modifyWebpackConfig,
plugins,
};