-
Notifications
You must be signed in to change notification settings - Fork 1
/
postcss.config.js
39 lines (33 loc) · 1.1 KB
/
postcss.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
import purgecss from "@fullhuman/postcss-purgecss";
const plugins = [];
if (process.env.NODE_ENV === "production") {
plugins.push(
purgecss({
content: [`index.html`, `./src/**/*.vue`],
defaultExtractor(content) {
const contentWithoutStyleBlocks = content.replace(
/<style[^]+?<\/style>/gi,
"",
);
const classes = Array.from(
contentWithoutStyleBlocks.matchAll(/class="([^"]+?)"/g),
).map((match) => match[1]);
const styles = classes.flatMap((styles) => styles.split(" "));
const ids = Array.from(
contentWithoutStyleBlocks.matchAll(/id="([^"]+?)"/g),
).map((match) => match[1]);
const tags = Array.from(
contentWithoutStyleBlocks.matchAll(/<(\w[\w-]*?)[^\w-]/g),
).map((match) => match[1]);
return styles.concat(ids).concat(tags);
},
safelist: [
/-(leave|enter|appear)(|-(to|from|active))$/,
/^(?!(|.*?:)cursor-move).+-move$/,
/^router-link(|-exact)-active$/,
/data-v-.*/,
],
}),
);
}
export default { plugins };