[READ-ONLY] Mirror of https://github.com/danielroe/roe.dev. This is the code and content for my personal website, built in Nuxt. roe.dev
0

Configure Feed

Select the types of activity you want to include in your feed.

roe.dev / modules / md-routes.ts
1.4 kB 49 lines
1import { addServerHandler, createResolver, defineNuxtModule, useNuxt } from 'nuxt/kit' 2import { pageMeta } from './shared/page-meta' 3 4export default defineNuxtModule({ 5 meta: { 6 name: 'md-routes', 7 }, 8 setup () { 9 const nuxt = useNuxt() 10 const resolver = createResolver(import.meta.url) 11 12 // Expose page meta as a virtual module for server routes 13 nuxt.options.nitro.virtual ||= {} 14 nuxt.options.nitro.virtual['#md-page-meta.json'] = () => 15 `export const pageMeta = ${JSON.stringify(pageMeta)}` 16 17 const mdPages = [ 18 '/', 19 '/ai', 20 '/bio', 21 '/talks', 22 '/uses', 23 '/projects', 24 '/blog', 25 ] 26 27 // Register blog post .md handlers once we know all the slugs 28 nuxt.hook('markdown:blog-entries', entries => { 29 for (const entry of entries) { 30 const route = `${entry.path}.md` 31 32 addServerHandler({ 33 route, 34 handler: resolver.resolve('./md-routes/runtime/server/blog-md.get'), 35 }) 36 37 mdPages.push(entry.path) 38 } 39 40 // Now that all pages are known, expose them for the middleware 41 nuxt.options.nitro.virtual!['#md-pages.json'] = () => 42 `export const mdPages = new Set(${JSON.stringify(mdPages)})` 43 }) 44 45 nuxt.options.nitro.externals ||= {} 46 nuxt.options.nitro.externals.inline ||= [] 47 nuxt.options.nitro.externals.inline.push('#md-page-meta.json', '#md-pages.json') 48 }, 49})