site: render markdown file as string

This commit is contained in:
Glen Huang
2025-10-06 20:27:51 +08:00
committed by Johannes Kirschbauer
parent 25db58ce11
commit 70523f75fa
5 changed files with 22 additions and 23 deletions

View File

@@ -1,8 +1,8 @@
const articles = import.meta.glob("./**/*.md");
export function load() {
const paths = Object.keys(articles).map((key) =>
key.slice("./".length, -".md".length),
const paths = Object.keys(articles).map(
(key) => key.slice("./".length, -".md".length) + "/",
);
return { paths };
}

View File

@@ -1,6 +1,6 @@
<script lang="ts">
let { data } = $props();
let { Content, metadata } = data;
let { content } = data;
</script>
<Content />
{@html content}

View File

@@ -2,10 +2,7 @@ import { error } from "@sveltejs/kit";
import type { Component } from "svelte";
const articles = import.meta.glob<{
metadata: {
layout?: string;
};
default: Component;
default: string;
}>("../**/*.md");
export async function load({ params }) {
@@ -14,11 +11,8 @@ export async function load({ params }) {
error(404, "");
}
const { metadata, default: Content } = await article();
const content = await article();
return {
Content,
metadata: {
...metadata,
},
content: content.default,
};
}

View File

@@ -6,19 +6,14 @@ import { vitePreprocess } from "@sveltejs/vite-plugin-svelte";
const config = {
// Consult https://svelte.dev/docs/kit/integrations
// for more information about preprocessors
preprocess: [
vitePreprocess(),
mdsvex({
extensions: [".md"],
}),
],
preprocess: [vitePreprocess()],
kit: {
// adapter-auto only supports some environments, see https://svelte.dev/docs/kit/adapter-auto for a list.
// If your environment is not supported, or you settled on a specific environment, switch out the adapter.
// See https://svelte.dev/docs/kit/adapters for more information about adapters.
adapter: adapter(),
},
extensions: [".svelte", ".md"],
extensions: [".svelte"],
};
export default config;

View File

@@ -1,6 +1,16 @@
import { sveltekit } from '@sveltejs/kit/vite';
import { defineConfig } from 'vite';
import { sveltekit } from "@sveltejs/kit/vite";
import { defineConfig } from "vite";
export default defineConfig({
plugins: [sveltekit()]
plugins: [
sveltekit(),
{
name: "markdown-loader",
transform(code, id) {
if (id.slice(-3) === ".md") {
return `export default ${JSON.stringify(code)};`;
}
},
},
],
});