From 0d7826b90ae361ea0be0e8beef0b0053580605a2 Mon Sep 17 00:00:00 2001 From: Daniel Roe Date: Fri, 16 Jun 2023 23:27:13 +0100 Subject: [PATCH] perf: ensure og deps don't make it into build --- nuxt.config.ts | 17 +++++++++++++++++ .../_chromium.ts => open-graph/chromium.ts} | 0 .../{utils/_file.ts => open-graph/file.ts} | 0 src/server/open-graph/index.ts | 5 +++++ .../{utils/_parser.ts => open-graph/parser.ts} | 0 .../_template.ts => open-graph/template.ts} | 2 +- src/server/routes/og/[slug].get.ts | 11 +++++++---- 7 files changed, 30 insertions(+), 5 deletions(-) rename src/server/{utils/_chromium.ts => open-graph/chromium.ts} (100%) rename src/server/{utils/_file.ts => open-graph/file.ts} (100%) create mode 100644 src/server/open-graph/index.ts rename src/server/{utils/_parser.ts => open-graph/parser.ts} (100%) rename src/server/{utils/_template.ts => open-graph/template.ts} (98%) diff --git a/nuxt.config.ts b/nuxt.config.ts index 1f09d342..29f118aa 100644 --- a/nuxt.config.ts +++ b/nuxt.config.ts @@ -1,3 +1,4 @@ +import type { InputPluginOption } from 'rollup' export default defineNuxtConfig({ $production: { experimental: { @@ -31,6 +32,22 @@ export default defineNuxtConfig({ }, hooks: { + // TODO: this is a hack that we surely do not need + 'nitro:config'(config) { + ;(config.rollupConfig!.plugins as InputPluginOption[]).push({ + name: 'purge-the-handler', + transform(_code, id) { + if (id.includes('og/[slug]')) { + return 'export default defineEventHandler(() => {})' + } + }, + }) + }, + 'nitro:init'(nitro) { + nitro.options._config.rollupConfig!.plugins = ( + nitro.options._config.rollupConfig!.plugins as InputPluginOption[] + ).filter(p => !p || !('name' in p) || p.name !== 'purge-the-handler') + }, 'vite:extendConfig'(config, { isClient }) { if (isClient) { config.define!['process.env.prerender'] = 'false' diff --git a/src/server/utils/_chromium.ts b/src/server/open-graph/chromium.ts similarity index 100% rename from src/server/utils/_chromium.ts rename to src/server/open-graph/chromium.ts diff --git a/src/server/utils/_file.ts b/src/server/open-graph/file.ts similarity index 100% rename from src/server/utils/_file.ts rename to src/server/open-graph/file.ts diff --git a/src/server/open-graph/index.ts b/src/server/open-graph/index.ts new file mode 100644 index 00000000..215842de --- /dev/null +++ b/src/server/open-graph/index.ts @@ -0,0 +1,5 @@ +export { getHtml } from './template' +export { parseReqs } from './parser' +export type { ParsedReqs } from './parser' +export { writeTempFile } from './file' +export { getScreenshot } from './chromium' diff --git a/src/server/utils/_parser.ts b/src/server/open-graph/parser.ts similarity index 100% rename from src/server/utils/_parser.ts rename to src/server/open-graph/parser.ts diff --git a/src/server/utils/_template.ts b/src/server/open-graph/template.ts similarity index 98% rename from src/server/utils/_template.ts rename to src/server/open-graph/template.ts index 7fbbcda2..5a44d210 100644 --- a/src/server/utils/_template.ts +++ b/src/server/open-graph/template.ts @@ -1,4 +1,4 @@ -import { ParsedReqs } from './_parser' +import { ParsedReqs } from './parser' function getCss() { return ` diff --git a/src/server/routes/og/[slug].get.ts b/src/server/routes/og/[slug].get.ts index f1c50009..43ae8531 100644 --- a/src/server/routes/og/[slug].get.ts +++ b/src/server/routes/og/[slug].get.ts @@ -1,7 +1,10 @@ -import { parseReqs, ParsedReqs } from '../../utils/_parser' -import { getHtml } from '../../utils/_template' -import { writeTempFile } from '../../utils/_file' -import { getScreenshot } from '../../utils/_chromium' +import type { ParsedReqs } from '../../open-graph/index' +import { + parseReqs, + getHtml, + writeTempFile, + getScreenshot, +} from '../../open-graph/index' const isDev = process.env.VERCEL_ENV === 'development' -- 2.51.2