-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathserver.js
63 lines (49 loc) · 2.06 KB
/
server.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
require('dotenv').config({
path: process.env.NODE_ENV ? `.env.${process.env.NODE_ENV}` : '.env.production',
});
const express = require('express');
const app = express();
const fs = require('fs');
const compression = require('compression');
const metaResolverMiddleware = require('./server/metaResolver').middleware;
const htmlContent = fs.readFileSync('./build/index.html');
const defaultMeta = {
title: 'Confidences d\'Abeilles',
ogtitle: 'Engagez-vous à nos côtés et soutenez les abeilles',
ogdescription: 'Une association qui prend soin des abeilles et qui invite les curieux, les amoureux des produits de la ruche à découvrir ce monde fascinant.',
ogurl: 'https://parrainage.confidencesdabeilles.fr/',
ogimg: 'https://parrainage.confidencesdabeilles.fr/metastatic/general.jpg',
};
app.use(compression());
app.use('/', express.static('build'));
app.use('/metastatic', express.static('public/meta'));
app.use('/static', express.static('build/static'));
app.use('/', metaResolverMiddleware);
function composeHtml(html, meta) {
const splitted = html.split('<title>Association Confidences d\'Abeilles</title>');
let output = '';
if (meta.title) {
output = `${output}<title>${meta.title}</title>`;
}
if (meta.ogtitle) {
output = `${output}<meta id="og-title" property="og:title" content="${meta.ogtitle}" />`;
}
if (meta.ogdescription) {
output = `${output}<meta id="og-description" property="og:description" content="${meta.ogdescription}" />`;
output = `${output}<meta name="description" content="${meta.ogdescription}" />`;
}
if (meta.ogurl) {
output = `${output}<meta id="og-url" property="og:url" content="${meta.ogurl}" />`;
}
if (meta.ogimg) {
output = `${output}<meta id="og-image" property="og:image" content="${meta.ogimg}" />`;
}
return splitted[0] + output + splitted[1];
}
app.get('/*', (req, res) => {
res.end(composeHtml(htmlContent.toString(), req.meta ? req.meta : defaultMeta));
});
app.listen(process.env.PORT || 5000, () => {
// eslint-disable-next-line no-console
console.log('Server started');
});