This repository has been archived by the owner on Dec 30, 2019. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
vue.config.js
87 lines (82 loc) · 2.71 KB
/
vue.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
const PurgeCssPlugin = require("purgecss-webpack-plugin");
const glob = require("globby");
const paths = require("./config/paths");
module.exports = {
outputDir: paths.appBuild,
lintOnSave: false,
pwa: {
manifestPath: "manifest.webmanifest",
name: "Demo App",
themeColor: "#303030",
mobileWebAppCapable: "yes",
appleMobileWebAppCapable: "no",
appleMobileWebAppStatusBarStyle: "black-translucent",
workboxOptions: {
// We're forcing this - otherwise, request the user to reload the page
// would not behave as intended.
skipWaiting: true,
clientsClaim: true
}
},
chainWebpack: config => {
config
.plugin("html")
.tap(args => {
args.forEach(arg => {
arg.loadingCss = require("./scripts/renderLoading")().css;
});
return args;
});
config
.when(process.env.NODE_ENV === "production", config => {
// Use a runtime chunk to optimize cache busting.
// Otherwise, the runtime information would be added to the entry point.
config
.optimization
.runtimeChunk({ name: "runtime" });
// Configure path alias for rxjs.
const rxPaths = require("rxjs/_esm2015/path-mapping");
const rxResolvedPaths = rxPaths();
for (const p in rxResolvedPaths) {
if (rxResolvedPaths.hasOwnProperty(p)) {
config.resolve.alias.set(p, rxResolvedPaths[p]);
}
}
// Configure style purging.
const purgeOptions = {
paths: glob.sync([
paths.resolveApp("public/index.html"),
paths.resolveApp("src/**/*.vue"),
paths.resolveApp("node_modules/vuetify/es5/**/*.js")
]),
styleExtensions: [".sass", ".scss", ".css", ".styl"],
whitelist: [
"*:not*", // See issue: https://github.com/purifycss/purifycss/issues/161
".notices", // Hierarchy not detected correctly.
".snackbar", // Same
".carousel-3d-container"
],
whitelistPatterns: [
/v-input__(append|prepend)-outer/,
/picker(-reverse)?-transition/,
/tab(-reverse)?-transition/,
/--text$/
]
};
config
.plugin("purgecss")
.use(PurgeCssPlugin, [purgeOptions]) // Mind the array!
;
// Configure workbox to exclude manifest.webmanifest (only excludes manifest.json by default)
config
.plugin("workbox")
.tap(args => {
args.forEach(arg => {
arg.exclude.push(/manifest\.webmanifest$/);
});
return args;
})
;
});
}
};