集成 Shiki 代码高亮插件。在默认情况下,Rspress 会基于 Prism.js 来实现语法高亮。不过在某些情况下,你需要实现更多语言的代码高亮,Prism.js 可能不够用,此时你可以接入该插件,使用 Shiki 支持更多的语言。
不过,引入该 Shiki 插件之后,Rspress 的编译性能会有所下降,所以请根据自己的需求来评估是否需要引入该插件。
首先在配置文件中写入以下的配置:
该插件支持传入一个对象配置,该对象配置的属性如下:
其中,代码高亮主题使用的是 css-variables,你也可以选择自己喜欢的主题,具体可以参考 Shiki 主题列表文档。
默认支持的语言包括 js、jsx、ts、tsx、json、css、scss、less、xml、diff、yaml、md、mdx、bash,如果你想支持更多的语言,可以在配置文件中传入 langs 属性,该属性是一个数组,数组中的每一项都是一个语言的 id,具体可以参考 Shiki 支持的语言列表。
Transformer 是本插件中的一个概念,它的作用是对代码块的特定语法进行转换,比如你可以使用该功能来实现代码块的 diff 高亮效果。
本插件中内置了一些 Transformer,包括:
transformerLineNumber:实现代码块的行号显示。你可以通过配置 transformers 属性来启用这些 Transformer,比如:
请查看 Shiki Transformers 文档 获取更多信息。