From 0257ea88dca09ced9c1dc6e53ba5f133c468df19 Mon Sep 17 00:00:00 2001 From: Divyansh Singh <40380293+brc-dd@users.noreply.github.com> Date: Tue, 12 Jul 2022 11:00:57 +0530 Subject: [PATCH] fix: layout inconsistencies and remove sidebar from 404 page (#964) --- src/node/serve/serve.ts | 17 +++++++++++++---- src/shared/shared.ts | 2 +- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/src/node/serve/serve.ts b/src/node/serve/serve.ts index 6b81e3061a72..c099b3d82188 100644 --- a/src/node/serve/serve.ts +++ b/src/node/serve/serve.ts @@ -1,3 +1,5 @@ +import fs from 'fs' +import path from 'path' import sirv from 'sirv' import compression from 'compression' import polka from 'polka' @@ -26,14 +28,21 @@ export async function serve(options: ServeOptions = {}) { const site = await resolveConfig(options.root, 'serve', 'production') const base = trimChar(options?.base ?? site?.site?.base ?? '', '/') + const notAnAsset = (pathname: string) => !pathname.includes('/assets/') + const notFound = fs.readFileSync(path.resolve(site.outDir, './404.html')) + const onNoMatch: polka.Options['onNoMatch'] = (req, res) => { + res.statusCode = 404 + if (notAnAsset(req.path)) res.write(notFound.toString()) + res.end() + } + const compress = compression() const serve = sirv(site.outDir, { etag: true, - single: true, maxAge: 31536000, immutable: true, setHeaders(res, pathname) { - if (!pathname.includes('/assets/')) { + if (notAnAsset(pathname)) { // force server validation for non-asset files since they // are not fingerprinted res.setHeader('cache-control', 'no-cache') @@ -42,14 +51,14 @@ export async function serve(options: ServeOptions = {}) { }) if (base) { - polka() + polka({ onNoMatch }) .use(base, compress, serve) .listen(port, (err: any) => { if (err) throw err console.log(`Built site served at http://localhost:${port}/${base}/\n`) }) } else { - polka() + polka({ onNoMatch }) .use(compress, serve) .listen(port, (err: any) => { if (err) throw err diff --git a/src/shared/shared.ts b/src/shared/shared.ts index 959d470c9200..67cb0b942df9 100644 --- a/src/shared/shared.ts +++ b/src/shared/shared.ts @@ -21,7 +21,7 @@ export const notFoundPageData: PageData = { title: '404', description: 'Not Found', headers: [], - frontmatter: {}, + frontmatter: { sidebar: false, layout: 'page' }, lastUpdated: 0 }