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

发布时间:2026/9/21 19:55:02

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/9/20 17:31:27

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

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

2026/9/20 17:31:27

开源可审计的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/9/21 19:54:26

2026最新昆古尼尔性能优化实战:告别教程依赖,直击项目瓶颈

2026最新昆古尼尔性能优化实战:告别教程依赖,直击项目瓶颈 你是不是也遇到过这种尴尬?书看了一摞,教程刷了三天三夜,代码能跑通,Demo也能演示,可一旦上手真实业务项目,CPU直接飙红,接口响应慢得像蜗牛爬。这就是典型的“看了一堆教程还是…

2026/9/21 19:54:26

2026最新赤道迅雷下载避坑指南:新手必看的3个致命错误

2026最新赤道迅雷下载避坑指南:新手必看的3个致命错误 刚入行写代码,是不是觉得教程都看懂了,一到自己动手写项目就抓瞎?别慌,这种“眼高手低”的状态,90%的新人都会经历。尤其是当你看到那些炫技的“赤道迅雷下载”功能时,心里痒痒的,但一上…

2026/9/21 19:49:25

疯狂猜图 帽子进阶用法

面试官拷问疯狂猜图帽子逻辑,手写实现避坑指南 面试被问原理答不上来?别慌。昨天陪一个哥们模拟面试,聊到前端状态管理和组件通信,他卡壳了。面试官顺嘴提了一句:“像《疯狂猜图》里那个帽子切换逻辑,你如果不用…

2026/9/21 3:28:31

GAMP 5 基于风险的计算机化系统验证:软件分类与审计追踪实践

简介:《A Risk-Based Approach to Compliant GxP Computerized Systems》即业内熟知的GAMP 5指南,面向制药企业质量与IT合规人员、验证工程师及计算机化系统管理者,用于解决GxP法规环境下系统合规性难以科学落地的问题。文档以风险管理为主线…

2026/9/21 3:33:19

安全托管MSSP实战:从静态防御到人机协同的攻防运营与应急响应

简介:这份PPT围绕互联网业务安全托管服务展开,面向企业安全负责人、IT运维人员及关注MSSP/MSS选型的读者,重点回应传统安全过度依赖人工、碎片化静态防御难以对抗产业化攻击等痛点。资源共1个pptx文件,包体约30.63MB,以…

2026/9/21 0:02:23

OpenResearch:构建可复现的开放式研究工作流

第一次看到“OpenResearch”这个名字,我脑子里冒出的不是某个具体软件,而更像一种研究方式的宣言:开放、可复现、可验证。这三件事放在一起,其实比大多数人想象中难得多。过去几年我一直在折腾自己的研究工作流,从纯纸…

2026/9/20 4:54:47

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/21 18:32:12

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/21 10:29:02

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

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

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

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