feat: use rehype-infer-description-meta to get excerpt

This commit is contained in:
DIYgod 2022-12-08 18:56:39 +00:00
parent ee44814b64
commit b72fbb501f
No known key found for this signature in database
GPG Key ID: D159328F47A80DCA
5 changed files with 7 additions and 25 deletions

View File

@ -56,5 +56,6 @@
"henryq",
"duoyu",
"candinya",
"shang"
"shang",
"v1984"
]

View File

@ -81,7 +81,7 @@ export const SiteHome: React.FC<{
</span>
</div>
<div
className="xlog-post-excerpt mt-3 text-zinc-500"
className="xlog-post-excerpt mt-3 text-zinc-500 line-clamp-2"
style={{
wordBreak: "break-word",
}}

View File

@ -9,7 +9,6 @@ import rehypeRaw from "rehype-raw"
import { refractor } from "refractor"
import rehypePrismGenerator from "rehype-prism-plus/generator"
import { rehypeImage } from "./rehype-image"
import { remarkExcerpt } from "./remark-excerpt"
import { rehypeTable } from "./rehype-table"
import { remarkCallout } from "./remark-callout"
import { rehypeExternalLink } from "./rehyper-external-link"
@ -30,6 +29,7 @@ import type { Root } from "hast"
import { Mention } from "~/components/ui/Mention"
import remarkMath from "remark-math"
import rehypeKatex from "rehype-katex"
import rehypeInferDescriptionMeta from "rehype-infer-description-meta"
export type MarkdownEnv = {
excerpt: string
@ -88,7 +88,6 @@ export const renderPageContent = (
env.toc = toc(tree, { tight: true, ordered: true })
})
.use(remarkGfm, {})
.use(remarkExcerpt, { env })
.use(remarkCallout)
.use(remarkDirective)
.use(remarkDirectiveRehype)
@ -107,6 +106,7 @@ export const renderPageContent = (
.use(rehypeTable)
.use(rehypeExternalLink)
.use(rehypeWrapCode)
.use(rehypeInferDescriptionMeta)
.use(rehypeSlug)
.use(rehypeAutolinkHeadings, {
properties: {
@ -155,7 +155,7 @@ export const renderPageContent = (
return {
contentHTML,
element: result?.result,
excerpt: env.excerpt,
excerpt: result?.data.meta.description,
frontMatter: env.frontMatter,
cover: env.cover,
toc: env.toc,

View File

@ -1,19 +0,0 @@
import { Plugin } from "unified"
import { MarkdownEnv } from "."
import { Root } from "remark-gfm"
import { toString as mdAstToString } from "mdast-util-to-string"
export const remarkExcerpt: Plugin<Array<{ env: MarkdownEnv }>, Root> =
({ env }) =>
(tree) => {
for (const node of tree.children) {
if (node.type === "paragraph") {
env.excerpt = mdAstToString(node, {
includeImageAlt: false,
}).slice(0, 140)
if (env.excerpt) {
break
}
}
}
}

View File

@ -22,5 +22,5 @@ module.exports = {
},
},
variants: {},
plugins: [],
plugins: [require("@tailwindcss/line-clamp")],
}