-
Notifications
You must be signed in to change notification settings - Fork 1
/
vue.config.js
93 lines (86 loc) · 2.48 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
88
89
90
91
92
93
const langs = require('./src/data/langs.json');
const nbCards = require('./src/data/fr/cards-fr.json').length;
const path = require('path');
const SitemapPlugin = require('sitemap-webpack-plugin').default;
const withoutLang = [
{ path: '/' },
{ path: '/game/grid' },
{ path: '/game/list' },
{ path: '/game/view' },
{ path: '/game/network' },
{ path: '/game/quiz' },
// { path: '/canvas/circle-quiz' },
{ path: '/about' },
];
for (let k = 1; k <= nbCards; ++k) {
withoutLang.push({ path: '/cards/' + k });
}
let paths = [];
for (const lang of langs) {
paths = paths.concat(
withoutLang.map((path) => {
return { path: '/' + lang.code + path.path };
})
);
}
paths.push({ path: '/' });
const publicPath = process.env.NODE_ENV === 'production' ? '/memo' : '/';
const host =
process.env.NODE_ENV === 'production' ? 'fresqueduclimat.org' : 'localhost';
module.exports = {
devServer: {
host,
},
publicPath,
configureWebpack: {
plugins: [
new SitemapPlugin({
base: 'https://fresqueduclimat.org',
paths: paths.map((path) => ({ path: (publicPath == '/' ? '' : publicPath) + path.path })),
options: {
filename: 'sitemap.xml',
lastmod: true,
},
}),
],
},
pluginOptions: {
prerenderSpa: {
registry: undefined,
renderRoutes: paths.map((path) => path.path),
useRenderEvent: true,
headless: true,
onlyProduction: true,
maxConcurrentRoutes: 8,
minify: {
collapseBooleanAttributes: true,
collapseWhitespace: true,
decodeEntities: true,
keepClosingSlash: true,
sortAttributes: true,
},
// TODO bug avec webpack 5 (voir https://www.npmjs.com/package/@dreysolano/prerender-spa-plugin)
postProcess(renderedRoute) {
// Ignore any redirects.
renderedRoute.route = renderedRoute.originalRoute;
// Remove /index.html from the output path if the dir name ends with a .html file extension.
// For example: /dist/dir/special.html/index.html -> /dist/dir/special.html
if (renderedRoute.route.endsWith('.html')) {
renderedRoute.outputPath = path.join(
__dirname,
'dist',
renderedRoute.route
);
} else {
renderedRoute.outputPath = path.join(
__dirname,
'dist',
renderedRoute.route,
'index.html'
);
}
return renderedRoute;
},
},
},
};