markdown - 如何在 Next.js markdown 博客上进行语法高亮

标签 markdown next.js highlight.js

我将 Next.js 用于我的博客,并将我的博客存储在 markdown 文件中,并将这些文件转换为字符串,然后使用 Greymatter 转换为 HTML。我的代码块分解为 <pre><code class="language-whatever">而且无论我做什么,我都无法获得语法高亮。

我尝试通过 npm 添加 highlight.js,从 highlight.js 和 prism 下载文件,使用他们的 cdn,但没有任何效果。

有没有人有使用 Next.js 在 Markdown 博客上设置语法突出显示的经验?一个例子或任何建议都会很棒!谢谢。

最佳答案

我想到了!我用了react-syntax-highlighter结合 react-markdown .我从 this blog 获得了一些代码片段以及如何解析代码片段然后通过语法荧光笔。

Here's my repo ,如果您想查看我的解决方案。

我正在使用标记将我的 Markdown 转换为阻止突出显示发生的 HTML 字符串。一旦我将 markdown 内容从标记的依赖项中提取出来,并将 gray-matter.content 传递给我的 ReactMarkdown,它就可以完美运行。

……嗯,也许不完美……

当我尝试使用颜色主题时,发生了一些奇怪的事情。我最终从节点模块中提取了我想要的主题并将其放在我的根目录中并从那里调用它,它非常好。有点hacky,但它的工作原理!

关于markdown - 如何在 Next.js markdown 博客上进行语法高亮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61722307/

相关文章:

themes - TiddlyWiki5 和 highlight.js - 如何更改语法高亮的样式/主题?

javascript - angularjs:如何禁用特定元素的指令

Javascript Markdown 解析

javascript - API 在未发送/api/users/create 响应的情况下解析,这可能会导致请求停止。下一个

reactjs - "getInitialProps"页面结果 "/[slug]"中的循环结构

reactjs - 我在使用 NextJs useRouter 时遇到了问题

javascript - Highlight.js 不尊重子模式的父正则表达式

markdown - 如何在摊牌中将单行换行符视为<br>?

html - Golang Martini 模板在渲染 Markdown 时只显示 HTML

html - Perl 中可扩展的类似 Markdown 的模块?