Docz 接入 gatsby-remark-vscode:用 VSCode 主题替换默认 Prism 代码高亮

发布时间:2026/11/11 11:24:26

Docz 接入 gatsby-remark-vscode:用 VSCode 主题替换默认 Prism 代码高亮 Docz 接入 gatsby-remark-vscode用 VSCode 主题替换默认 Prism 代码高亮【免费下载链接】docz✍ It has never been so easy to document your things!项目地址: https://gitcode.com/gh_mirrors/do/docz本文基于 docz 仓库中的 with-gatsby-remark-vscode 示例 展开完整讲解如何在 Docz 文档站中集成 gatsby-remark-vscode 插件让 markdown 内嵌代码块以 VSCode 的 TextMate 语法高亮与主题风格渲染。读完本文你将掌握示例项目的安装/运行/构建全流程、Docz 中两类代码块的本质区别以及通过 Gatsby 主题 shadowing 移除默认pre/code组件的三步配置法并理解其背后的 MDXProvider 渲染机制。背景为什么 Docz 需要 gatsby-remark-vscodeDocz 底层基于 Gatsby 构建其 markdown/mdx 内容中的代码块默认由主题提供的pre和code组件渲染Docz 内部使用 Prism 方案。而 gatsby-remark-vscode 是面向 Gatsby 的 remark 插件它把代码高亮任务从 Prism 切换到 VSCode 的语法高亮体系——使用 TextMate 语法做分词、以 VSCode 主题配色输出从而获得与编辑器一致的高亮效果。需要明确的是这个插件运行在Gatsby 构建期服务端只能处理静态的、被 remark 管线解析的代码块因此并不是 Docz 中所有代码都能被它接管这正是下一节要区分的核心问题。示例项目结构一览仓库中 examples/with-gatsby-remark-vscode 是一个最小可运行的完整示例其关键文件如下examples/with-gatsby-remark-vscode/ ├── doczrc.js # Docz 配置含 gatsbyRemarkPlugins ├── package.json # 依赖与 dev/build/serve 脚本 └── src/ ├── components/ │ ├── Alert.jsx # 示例组件 │ └── Alert.mdx # 含 markdown 代码块与 Playground 的文档 ├── gatsby-theme-docz/ │ └── components/ │ └── index.js # 主题 shadowing去掉 pre/code 组件 └── index.mdx # 首页文档演示 JS/JSX/TS 代码块其中 doczrc.js 已经预置了gatsbyRemarkPlugins配置shadowing 文件 也已就位你可以直接对照下文逐步理解每一处的作用。获取示例项目两种方式方式一使用 create-docz-app 脚手架原文档推荐通过官方脚手架创建然后在生成的工程内自行添加gatsby-remark-vscodenpx create-docz-app docz-app-with-gatsby-remark-vscode # or yarn create docz-app docz-app-with-gatsby-remark-vscode方式二手动下载示例目录原文档提供了直接从 docz 仓库提取该示例目录的命令curl https://codeload.github.com/doczjs/docz/tar.gz/main | tar -xz --strip2 docz-main/examples/with-gatsby-remark-vscode mv with-gatsby-remark-vscode docz-with-gatsby-remark-vscode-example cd docz-with-gatsby-remark-vscode-example也可以直接克隆仓库后从本地提取该目录git clone https://gitcode.com/gh_mirrors/do/docz cp -r docz/examples/with-gatsby-remark-vscode ./docz-with-gatsby-remark-vscode-example cd docz-with-gatsby-remark-vscode-example安装依赖yarn # npm i查看 examples/with-gatsby-remark-vscode/package.json示例依赖了doczlatest、gatsby-remark-vscode^1.4.0、react、react-dom以及prop-types并把docz dev/build/serve分别映射到 npm 脚本dev/build/serve。运行、构建与预览示例提供了完整的三段式工作流# 开发模式启动本地热更新文档服务 yarn dev # npm run dev # 生产构建输出静态站点 yarn build # npm run build # 预览构建产物即 docz serve yarn serve # npm run serveTutorialDocz 中的两类代码块原文档指出 Docz 中存在两类代码块这是理解本插件适用边界的关键第一类markdown 内嵌代码块即直接写在 mdx 文件中的围栏代码块js、jsx、ts 等。它们在构建期被 remark/mdx 管线解析为静态 HTML可以被 gatsby-remark-vscode 接管渲染。在 examples/with-gatsby-remark-vscode/src/index.mdx 中可以看到 JS、JSX、TypeScript 三种语言的内嵌代码块示例例如js const a abc; const b bca; console.log(${a}-${b}) 第二类Playground 组件中的代码通过Playground组件包裹的代码是可编辑且在前端客户端渲染的Playground {/* this code is editable by the user */} SomeComponent / /Playground由于这类代码块在浏览器中动态渲染、由用户实时编辑构建期的 remark 插件无法介入因此gatsby-remark-vscode 对 Playground 中的代码不生效。这是插件能力边界并非配置遗漏。示例中 Alert.mdx 即同时包含 markdown 内嵌 JS 代码块与Playground组件两种形态。接入 gatsby-remark-vscode 的三步配置第 1 步安装插件yarn add gatsby-remark-vscode第 2 步在 doczrc.js 中声明 gatsbyRemarkPlugins在你的doczrc.js中加入如下配置与示例 doczrc.js 完全一致export default { menu: [Getting Started, Components], gatsbyRemarkPlugins: [ { resolve: gatsby-remark-vscode, // OPTIONAL options: {}, }, ], }gatsbyRemarkPlugins是 Docz 透传给底层 Gatsby 的 remark 插件数组resolve指向插件包名options可传入 gatsby-remark-vscode 自身的参数如主题选择等不配置时使用插件默认值。第 3 步shadowing 移除默认的 pre / code 组件原文档特别提示仅完成前两步时站点是broken的。原因在于 Docz 主题默认通过 MDXProvider 向所有 mdx 内容注入pre和code组件基于 Prism 渲染它们与 gatsby-remark-vscode 的构建期输出发生冲突。必须通过 Gatsby 主题 shadowing 覆盖主题的组件导出把pre/code从 MDXProvider 的映射中拿掉把代码块渲染完全交给 gatsby-remark-vscode。在项目中创建src/gatsby-theme-docz/components/index.js路径与示例一致内容如下import * as headings from gatsby-theme-docz/src/components/Headings import { Layout } from gatsby-theme-docz/src/components/Layout import { Playground } from gatsby-theme-docz/src/components/Playground import { Props } from gatsby-theme-docz/src/components/Props export default { ...headings, playground: Playground, layout: Layout, props: Props, }这一文件的实际内容即 examples/with-gatsby-remark-vscode/src/gatsby-theme-docz/components/index.js。shadowing 的原理Gatsby 主题允许用户在src/gatsby-theme-docz/下放置与主题内部同路径的文件来覆盖主题实现。主题默认的组件映射位于 core/gatsby-theme-docz/src/components/index.js它导出了export default { ...headings, code: Code, // 默认代码组件Prism 渲染 playground: Playground, pre: Pre, // 默认代码块容器组件 layout: Layout, props: Props, }其中Pre的实现位于 core/gatsby-theme-docz/src/components/Pre/index.js仅是一个包裹children的div真正的 Prism 高亮逻辑由Code完成。shadow 文件刻意不再导出code与preMDXProvider 便不会为代码块注入 Prism 组件静态代码块的渲染权由此交还给 gatsby-remark-vscode。验证效果完成以上三步后运行yarn docz dev你会看到 mdx 中内嵌的 JS/JSX/TS 代码块以 VSCode 风格的高亮与主题呈现。同时请记住Playground 内的代码依然保持原有的可编辑、客户端渲染行为不受本插件影响。总结与注意事项适用边界gatsby-remark-vscode 只作用于 markdown 内嵌代码块构建期静态渲染对Playground组件的客户端可编辑代码不生效。冲突根源Docz 主题默认导出pre/code组件注入 MDXProvider必须通过 主题 shadowing 移除它们否则站点渲染会出错原文档称之为 broken。配置要点doczrc.js中的gatsbyRemarkPlugins数组按 Gatsby 插件规范书写options可选默认为插件自身行为。完整参考本示例的全部配置与文档源文件均可直接查看 examples/with-gatsby-remark-vscode主题默认组件映射可对照 core/gatsby-theme-docz/src/components/index.js将两者对比即可透彻理解 shadowing 的作用范围。【免费下载链接】docz✍ It has never been so easy to document your things!项目地址: https://gitcode.com/gh_mirrors/do/docz创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/11/10 20:39:16

PixiEditor · 自定义笔刷配置速通手册

PixiEditor 自定义笔刷配置速通手册 【免费下载链接】PixiEditor PixiEditor is a Universal Editor for all your 2D needs 项目地址: https://gitcode.com/GitHub_Trending/pi/PixiEditor PixiEditor 自定义笔刷只讲三件事:尺寸、抗锯齿、稳定化&#xff…

2026/11/10 22:22:32

开源可审计的LLM代码评审工作流:CLI+Git+OpenAI协议实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/11 11:24:14

沧州电工证电话报名费多少钱,电子证书怎么查最靠谱

沧州电工证电话报名费多少钱,电子证书怎么查最靠谱 工地太忙根本没时间复习考试,这是很多一线施工人员的真实写照。尤其是像你这样在濮阳项目现场担任管理员的,平时要处理安全巡查、设备检查、人员调度等多项任务,根本抽不出时间来准备特种作业证的考试。…

2026/11/11 11:24:14

电工证考试看图找错误怎么过?上岗必备的避坑经验来了

电工证考试看图找错误怎么过?上岗必备的避坑经验来了 怕考不过白交培训费?电工证考试看图找错误题型,确实是很多学员心中的“噩梦”。特别是像三门峡这类中小型施工企业的负责人,既要忙于项目管理,又要抽时间备考,一不小心就可能因为这些“隐藏陷阱”题…

2026/11/11 11:24:14

澳门认内地电工证吗?全国通用的电工证报考全攻略

澳门认内地电工证吗?全国通用的电工证报考全攻略 你是不是也跟很多特种作业的朋友一样, 不知道去哪报名怕被中介坑 ?最近有不少人问我“澳门认内地电工证吗”,还有不少是来自漯河水利工程的从业者,他们经常问“电工证能全国通用吗?去澳门能用吗?”今…

2026/11/11 11:24:14

海南电工证要怎么考 别踩坑的全流程避坑指南

海南电工证要怎么考 别踩坑的全流程避坑指南 你是不是也遇到过这种情况:在海南打工,听说电工证是很多岗位的硬门槛,但不知道去哪报名,一不小心就被中介坑了钱,还考了个假证?别急,今天我就从一个在商丘干建筑工的老哥角度,手把手教你怎么在海南考电工…

2026/11/11 11:19:13

潍坊电工证考试地址全国通用吗?外省证能不能转过来?

潍坊电工证考试地址全国通用吗?外省证能不能转过来? 之前考的证在外省能不能转过来?这可能是很多在外地工作或者打算回老家发展的朋友最关心的问题。特别是像潍坊这样的地方,作为山东省的重要城市,每年都有不少人在这里报考电工证,但很多人担心,如果在…

2026/11/10 8:12:38

电工证丢失还能补吗?千万别踩坑,丢了证等于失业

电工证丢失还能补吗?千万别踩坑,丢了证等于失业 你正在找工作,但手里的电工证突然丢了,这下怎么办?别急,先别慌, 电工证丢失还能补吗 ?答案是肯定的,但 千万别踩坑 ,补办流程如果不了解,可能会耽误你上岗、甚至影响到你的收入。…

2026/11/11 0:02:26

考低压电工证通过率考试真题与备考技巧

低压电工证通过率高不高?学历不高也能考,值不值得考? 你是不是总听说电工证能帮你找高薪工作,但又担心自己学历不够,考不上?其实,低压电工证考试门槛并没有你想象中那么高,关键是方法对不对。这篇文章就告诉你, 考低压电工证通过率到底有多高 ,…

2026/11/11 0:02:26

低压电工证学时千万别踩坑,濮阳毕业生怎么避坑报名

低压电工证学时千万别踩坑,濮阳毕业生怎么避坑报名 你是不是也和我一样,刚毕业就听说低压电工证学时必须达标才能上岗?可一打听,发现报名机构五花八门,价格参差不齐, 不知道去哪报名怕被中介坑…

2026/11/10 20:08:15

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/10 10:29:37

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑