mirror of
https://github.com/LukeHagar/website.git
synced 2025-12-06 04:22:07 +00:00
feat: express server
This commit is contained in:
20
server/main.js
Normal file
20
server/main.js
Normal file
@@ -0,0 +1,20 @@
|
||||
import express from 'express';
|
||||
import compression from 'compression'
|
||||
import { sitemap } from './sitemap.js'
|
||||
import { handler } from '../build/handler.js';
|
||||
|
||||
async function main() {
|
||||
const app = express();
|
||||
app.use(compression());
|
||||
app.use(await sitemap());
|
||||
app.use(handler);
|
||||
app.use(function (req, res, next) {
|
||||
res.setHeader('Cache-Control', 'max-age 3600, must-revalidate');
|
||||
next();
|
||||
});
|
||||
app.listen(3000, () => {
|
||||
console.log('Listening on http://0.0.0.0:3000');
|
||||
});
|
||||
}
|
||||
|
||||
main();
|
||||
23
server/sitemap.js
Normal file
23
server/sitemap.js
Normal file
@@ -0,0 +1,23 @@
|
||||
/**
|
||||
* @returns {Promise<import('express').RequestHandler>}
|
||||
*/
|
||||
export async function sitemap() {
|
||||
const manifest = await import('../build/server/manifest.js');
|
||||
const prerendered = manifest.prerendered;
|
||||
|
||||
const sitemap = `<?xml version="1.0" encoding="UTF-8"?>
|
||||
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
|
||||
${[...prerendered].filter(route => !route.endsWith('.json')).map(route => `<url>
|
||||
<loc>https://appwrite.io${route}</loc>
|
||||
</url>
|
||||
`).join('')}
|
||||
</urlset>`;
|
||||
|
||||
return async (req, res, next) => {
|
||||
if (req.url === '/sitemap.xml') {
|
||||
res.setHeader('Content-Type', 'application/xml');
|
||||
return res.send(sitemap);
|
||||
}
|
||||
next();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user