Skip to content

Commit 2196157

Browse files
committed
Strip Markdown in <head> description
1 parent acf367e commit 2196157

4 files changed

Lines changed: 46 additions & 2 deletions

File tree

package-lock.json

Lines changed: 31 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,10 @@
4141
"react": "^18.3.1",
4242
"react-dom": "^18.3.1",
4343
"rehype-external-links": "^3.0.0",
44+
"remark": "^15.0.1",
4445
"remark-emoji": "^5.0.2",
4546
"remark-heading-id": "^1.0.1",
47+
"strip-markdown": "^6.0.0",
4648
"typescript": "^5.9.3"
4749
},
4850
"devDependencies": {

src/components/Head.astro

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,10 @@ const { title: siteTitle, description: siteDescription } = site;
1919
2020
const { title, description, tags, markdownNegotiation = false } = Astro.props;
2121
22+
const plainDescription = description
23+
? (await plainText(description)).trim()
24+
: siteDescription;
25+
2226
const image = `${root}favicon.png`;
2327
---
2428

@@ -53,7 +57,7 @@ const image = `${root}favicon.png`;
5357
<SEO
5458
charset="utf-8"
5559
title={title ?? siteTitle}
56-
description={description ? plainText(description) : siteDescription}
60+
description={plainDescription}
5761
{canonical}
5862
openGraph={{
5963
basic: {
@@ -66,7 +70,7 @@ const image = `${root}favicon.png`;
6670
twitter={{
6771
site: root,
6872
title: title ?? siteTitle,
69-
description,
73+
description: plainDescription,
7074
image,
7175
card: "summary",
7276
}}

src/lib/utils.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
import { marked } from "marked";
2+
import { remark } from "remark";
3+
import strip from 'strip-markdown';
24

35
export const conceptPagePath = (slug: string): string => {
46
return pagePath("concepts", slug);
@@ -12,6 +14,11 @@ export const startPagePath = (slug: string): string => {
1214
return pagePath("start", slug.substring(1));
1315
};
1416

17+
export const plainText = async (md: string): Promise<string> => {
18+
const file = await remark().use(strip).process(md);
19+
return String(file).trim();
20+
};
21+
1522
const pagePath = (collection: string, slug: string): string => {
1623
return `/${collection}/${slug}`;
1724
};

0 commit comments

Comments
 (0)