From e2879c60fc33ae1b41c1be015f42d83f466d8f6d Mon Sep 17 00:00:00 2001 From: Daniel Roe Date: Tue, 17 Feb 2026 16:06:38 +0000 Subject: [PATCH] refactor: migrate away from `@nuxt/content` + use mdc directly (#1818) --- app/components/StaticMarkdownRender.server.ts | 20 +- app/components/TheBlogIndex.server.vue | 10 +- app/components/TheHome.server.vue | 6 +- .../{global => mdc}/CalSchedule.vue | 0 app/components/{global => mdc}/ProseA.vue | 0 app/components/{global => mdc}/ProseImg.vue | 0 app/components/{global => mdc}/ProseTh.vue | 0 app/components/{global => mdc}/SocialPost.vue | 0 app/pages/blog/[article].vue | 21 +- app/shims.d.ts | 5 - content.config.ts | 22 -- modules/bsky-comments.ts | 185 +++++---- modules/content.ts | 22 -- modules/markdown.ts | 250 +++++++++++++ modules/metadata.ts | 50 --- modules/router/index.ts | 1 + modules/router/runtime/routes.ts | 2 +- modules/sync/runtime/server/tasks/sync.ts | 6 +- modules/sync/runtime/server/utils/items.ts | 45 --- nuxt.config.ts | 34 +- package.json | 3 +- pnpm-lock.yaml | 351 +----------------- test/unit/bundle.spec.ts | 8 +- test/unit/sync-items.spec.ts | 80 ++-- uno.config.ts | 3 - 25 files changed, 439 insertions(+), 685 deletions(-) rename app/components/{global => mdc}/CalSchedule.vue (100%) rename app/components/{global => mdc}/ProseA.vue (100%) rename app/components/{global => mdc}/ProseImg.vue (100%) rename app/components/{global => mdc}/ProseTh.vue (100%) rename app/components/{global => mdc}/SocialPost.vue (100%) delete mode 100644 app/shims.d.ts delete mode 100644 content.config.ts delete mode 100644 modules/content.ts create mode 100644 modules/markdown.ts delete mode 100644 modules/metadata.ts diff --git a/app/components/StaticMarkdownRender.server.ts b/app/components/StaticMarkdownRender.server.ts index 057d6d70..d1d8ab19 100644 --- a/app/components/StaticMarkdownRender.server.ts +++ b/app/components/StaticMarkdownRender.server.ts @@ -1,4 +1,6 @@ -import { ContentRenderer } from '#components' +import { MDCRenderer } from '#components' +import { blogBodyLoaders } from '#build/markdown/blog/index.mjs' +import { pageBodyLoaders } from '#build/markdown/page/index.mjs' export default defineComponent({ props: { @@ -6,13 +8,15 @@ export default defineComponent({ path: { type: String, required: true }, }, async setup (props) { - if (import.meta.dev) { - const { data } = await useAsyncData(() => - queryCollection(props.collection).path(props.path!).first(), - ) - return () => h(ContentRenderer, { value: data.value! }) + const slug = props.path.replace(/^\/(?:blog\/)?/, '').replace(/\/$/, '') + const loaders = props.collection === 'blog' ? blogBodyLoaders : pageBodyLoaders + const loader = loaders[slug] + + if (!loader) { + return () => null } - const value = await queryCollection(props.collection).path(props.path!).first() - return () => h(ContentRenderer, { value: value! }) + + const parsed = await loader() + return () => h(MDCRenderer, { body: parsed.body, tag: 'div' }) }, }) diff --git a/app/components/TheBlogIndex.server.vue b/app/components/TheBlogIndex.server.vue index 2c1eff29..fe444604 100644 --- a/app/components/TheBlogIndex.server.vue +++ b/app/components/TheBlogIndex.server.vue @@ -1,17 +1,11 @@