内容提要
Shiki是一款美观且强大的代码语法高亮器,基于TextMate的语法和主题。它能为几乎所有主流编程语言提供准确且快速的语法高亮。使用Shiki只需几分钟即可在Hugo配置好代码语法高亮器。它是纯静态的,不需要引入庞大的JS资源。可以通过@shikijs/rehype插件在Hugo博客项目中实现Shiki代码语法高亮。
延伸解读
为何选择 Shiki 而非其他高亮方案
Shiki 基于 TextMate 语法和主题,与 VS Code 同源,能提供准确的高亮效果,且无需维护自定义正则、CSS 或 HTML。它直接复用 VS Code 的颜色主题,对开发者友好。更重要的是,Shiki 是纯静态的,高亮结果写入 HTML,不引入庞大的 JS 资源,因此页面加载更快,也适合在本地或 GitHub Actions 等构建平台部署。
配置中的关键步骤与注意事项
在 Hugo 中启用 Shiki 需将 codeFences 设为 false,并创建 .rehyperc 文件配置主题。暗黑模式需在 CSS 中适配颜色变量,例如使用 html.dark 或 prefers-color-scheme 时分别设置。生成时先运行 hugo 构建,再用 rehype-cli 处理 public 目录。若遇到内存不足,可通过 NODE_OPTIONS 调整堆大小,但 GitHub Actions 免费 Runner 上限约 7G。
在 GitHub Actions 中集成的容错处理
在 GitHub Actions 中,需在 package.json 添加 shiki 脚本,并配置 Workflow 依次执行 Hugo 构建、Node 环境设置和 Shiki 生成。由于旧博文可能包含不支持的代码名称,Shiki 可能报错并中断部署。为此,可在运行命令后添加 || true,即使出错也继续后续步骤,确保部署流程不被阻塞。
Q&A
Shiki是什么,它的主要功能是什么?
Shiki是一款基于TextMate语法和主题的代码语法高亮器,支持几乎所有主流编程语言,提供准确且快速的语法高亮。
在Hugo中如何配置Shiki?
在Hugo中配置Shiki只需几分钟,需将codeFences设置为false,并创建.rehyperc文件以配置高亮主题。
使用Shiki时需要注意哪些安装前提?
使用Shiki前需要确保已安装Node.js和Yarn,并在Hugo项目中执行相关安装命令。
Shiki支持哪些主题?
Shiki支持多种主题,常用的有github-light和github-dark-dimmed,可以在.rehyperc文件中配置。
在GitHub Actions中如何使用Shiki?
在GitHub Actions中使用Shiki时,需要在package.json中添加相关脚本,并配置Workflow以确保部署流程顺利进行。
Shiki的内存使用限制如何设置?
运行Shiki时可能会遇到内存报错,可以通过设置环境变量export NODE_OPTIONS='--max_old_space_size=7168'来限制内存使用。