本站基于 Next.js RSC 的代码高亮实现方法
本站是基于 Next.js 15
RSC 的,使用 next-mdx-remote 编译 Markdown 文件, rehype-pretty-code 插件实现代码高亮,先看一下实现的效果。
实现效果
JS 代码高亮
行高亮,2~3 行和第 5 行,语法 js {2-3,5}
关键字高亮,语法 js /Nshen/
高亮组,语法 js /age/#1 /name/#1 /setAge/#2 /setName/#2 /40/#3 /"Nshen"/#3
高亮 Inline Code [1, 2, 3] {a:'aaa', str:'bbb', num: 123, b: true}
语法为
显示行号和代表标题 js showLineNumbers title="以下代码显示了行号"
实现方法
核心代码在 24 行,当编译 mdx
文件的时候,在 rehypePlugins
中传入 rehype-pretty-code
插件
传入插件后观察编译后的结构中多了很多类似 data-rehype-pretty-code-figure
的属性,这个叫做Data attributes 。
CSS 有专门的选择器可以针对生成的标签添加样式。由于本站是基于 Next.js 和 Tailwind 的,所以可以直接在 global.css
这个文件中继续添加样式。
我不是 CSS 专家,以上是我调试很久得到的效果,尽量做到了美观简洁,也欢迎分享你的样式。