GraphQL .NET 官方文档站构建与发布指南:基于 Gatsby 的 docs2 站点全解析

发布时间:2026/10/10 14:11:00
GraphQL .NET 官方文档站构建与发布指南:基于 Gatsby 的 docs2 站点全解析
后端【免费下载链接】graphql-dotnetGraphQL for .NET项目地址https://gitcode.com/gh_mirrors/gr/graphql-dotnet点击查看免费下载本文以 graphql-dotnet 仓库中 docs2/README.md 为骨架系统讲解 GraphQL .NET 官方文档站docs2的本地运行、构建与发布流程并深入剖析其基于 Gatsby 的文档站点架构菜单配置、Markdown 渲染、导航组件与 publish_docs.sh 的部署原理。读完本文你将掌握如何在自己的机器上启动这套文档站、如何用一条命令发布到 GitHub Pages以及文档目录与页面路由之间是如何一一对应的。导读GraphQL .NET 的官方文档并不存放在仓库的静态文件里而是由一个独立的 Gatsby 站点docs2目录托管——它以 site/sitemap.yml 作为导航骨架、以 site/docs 下的 Markdown 作为正文内容编译成静态站点后发布到 GitHub Pages。本文围绕 docs2/README.md 中的两条核心命令yarn develop本地开发、yarn deploy发布上线结合仓库内插件与组件源码完整还原这套文档系统的运行机制帮助你理解 GraphQL .NET 官方文档Getting Started、Guides、Analyzers、Migration Guides 四大栏目是如何被组织、渲染和部署的。一、docs2 是什么GraphQL .NET 官方文档的静态站点docs2是仓库中承载官方文档的 Gatsby 站点目录。与主项目src/GraphQL 下的 .NET 源码完全解耦文档的正文、导航、样式与发布脚本都集中在docs2之下结构如下docs2/README.md文档站的运行与发布说明本文的主体docs2/gatsby-config.jsGatsby 站点配置声明插件、站点元信息与 Markdown 内容目录docs2/gatsby-node.jsGatsby Node API 占位实现docs2/package.jsonnpm 脚本与依赖清单docs2/publish_docs.shGitHub Pages 发布脚本docs2/site/sitemap.yml站点导航菜单定义docs2/site/docs全部文档正文Markdowndocs2/srcReact 组件布局、侧边导航、文档页docs2/plugins/docs本地 Gatsby 插件负责解析 sitemap 并生成页面。从站点配置可以确认该站点的元信息为标题GraphQL .NET、描述GraphQL for .NET、关键词graphql,api,web api,.net,.net core见 docs2/gatsby-config.js与仓库根目录 README.md 中GraphQL for .NET的项目定位保持一致。二、本地运行文档站yarn 与 yarn develop按照 docs2/README.md 的说明在docs2目录下执行两条命令即可启动本地开发服务器yarn yarn developyarn根据 docs2/package.json 安装全部依赖yarn install的简写。依赖清单包括gatsby5.16.1、react18.2.0、react-dom18.2.0、gatsby-transformer-remark、gatsby-remark-prismjs、gatsby-source-filesystem、gh-pages等yarn develop对应 docs2/package.json 中的develop: gatsby develop启动 Gatsby 开发服务器提供热重载编辑 docs2/site/docs 下的 Markdown 后浏览器会实时刷新。2.1 两条 npm 脚本的分工docs2/package.json 中定义了四个脚本其中两个与日常使用直接相关脚本底层命令用途developgatsby develop本地开发服务器实时预览文档buildgatsby build生产构建产出public静态目录deploybash publish_docs.sh构建并发布到 GitHub Pagesformatprettier --write src/**/*.js统一格式化 React 组件源码注意deploy并不是直接调用gh-pages而是转交给 docs2/publish_docs.sh 执行脚本内容与参数会在下文第四节详细拆解。2.2 Node 版本注意事项docs2/README.md 明确指出发布文档需要Node v10.22.0并提示v12.x 目前存在已知问题。这一约束是仓库作者留下的运行前提建议在发布环境中使用版本管理器如 nvm锁定v10.22.0如果只做本地预览可先尝试当前环境的 Node 版本遇到兼容性问题再切换到文档要求的版本。这一点属于环境限制请以你实际安装的版本实测为准。三、文档站架构sitemap 驱动 Markdown 渲染本地开发之所以能两条命令跑起来背后是docs2一套清晰的文档管线YAML 菜单 → Gatsby 节点 → 页面路由 → React 组件渲染。3.1 导航骨架site/sitemap.yml整个文档站的栏目结构由 docs2/site/sitemap.yml 单一文件定义顶层分为四大部分Getting Started入门系列Introduction、Installation、Queries、Schema Types、Arguments、Directives、Mutations、Subscriptions、Error Handling、Dependency Injection 等 31 篇正文位于 docs2/site/docs/getting-startedGuides进阶指南ASP.NET Core Integration、Serialization、Dataloader、Complexity Analyzer、Schema Generation、Document Caching 等 8 篇正文位于 docs2/site/docs/guidesAnalyzersGQL001GQL020 共 20 条 Roslyn 分析器规则文档正文位于 docs2/site/docs/analyzers总览见 docs2/site/docs/analyzers/overview.mdMigration Guidesv0.8.0 到 v8 的迁移指南正文位于 docs2/site/docs/migrations。每个菜单项通过title、dir、file三个字段描述dir对应 Markdown 所在子目录file对应文件名。例如Getting Started → Installation对应 docs2/site/docs/getting-started/installation.md。3.2 菜单如何变成页面本地插件 docs站点通过gatsby-config.js中的本地插件docs指向 docs2/plugins/docs驱动核心逻辑在 docs2/plugins/docs/gatsby-node.jssourceNodes来自 docs2/plugins/docs/gatsby/sourceNodes.js读取 sitemap YAML用js-yaml解析后创建DocsMenu类型的 Gatsby 节点并用chokidar监听配置文件变化实现改菜单即热更新createPages遍历菜单中的每个item.file用github-slugger将文件名转成 slug调用createPage生成路由例如getting-started/installation.md会生成/docs/getting-started/installation这样的路径onCreateNode为每个 Markdown 节点计算相对路径字段供页面查询使用。3.3 正文渲染MarkdownRemark 与代码高亮docs2/gatsby-config.js 通过gatsby-source-filesystem将 docs2/site/docs 挂载为内容源再经gatsby-transformer-remark把 Markdown 转为 HTML并依次套用三个插件gatsby-remark-prismjs代码块语法高亮gatsby-remark-images文档内图片处理maxWidth: 600gatsby-remark-autolink-headers为标题自动生成锚点链接方便文档内跳转与引用。3.4 页面组件docs-page 与 SideNav渲染层面由 docs2/src/components/docs-page.js 负责它通过 GraphQL 查询query DocsPage($relativePath: String!)拿到当前页面的 HTML 和站点元信息用dangerouslySetInnerHTML注入正文并在页面顶部提供 Edit this page on GitHub 编辑链接基于siteMetadata.githubEditUrl拼接相对路径生成。侧边导航由 docs2/src/components/SideNav.js 递归渲染根据当前路由高亮对应菜单项带file的条目渲染为 GatsbyLink无file的分组标题渲染为纯文本span从而形成 docs2/site/sitemap.yml 里四级导航的树形 UI。配套的布局与样式见 docs2/src/components/layout.js、docs2/src/components/header.js 及同名.module.css文件。四、发布到 GitHub Pagesyarn deploy 全流程4.1 发布前提docs2/README.md 列出了两条硬性前提对graphql-dotnet/graphql-dotnet.github.io仓库拥有写权限——发布目标仓库是独立于本仓库的 GitHub Pages 站点仓库Node 版本为 v10.22.0v12.x 当前存在已知问题。满足条件后在docs2目录执行yarn deploy4.2 脚本逐行拆解yarn deploy实际运行 docs2/publish_docs.sh。该脚本是理解发布流程的关键核心逻辑如下#!/bin/bash if [ -z $1 ] then echo echo ERROR: Please provide a version echo echo ex: yarn deploy 2.0.0 echo else echo Generating documentation for Version $1 yarn gatsby build echo Publishing gh-pages -d public -b master \ -r gitgithub.com:graphql-dotnet/graphql-dotnet.github.io.git \ -m Documentation update for $1 fi逐段解读版本号参数yarn deploy 2.0.0这样调用脚本通过$1接收版本号若未传参则打印ERROR: Please provide a version并给出示例后退出。版本号最终会写入 git 提交信息Documentation update for 版本号生产构建yarn gatsby build执行 Gatsby 生产构建把 docs2/site/docs 的全部文档编译成静态文件输出到public/目录发布gh-pages -d public将public目录作为站点内容发布-b master指定目标分支为master注意与常见默认gh-pages分支不同-r指定远端仓库gitgithub.com:graphql-dotnet/graphql-dotnet.github.io.git-m指定提交信息。gh-pages工具来自 docs2/package.json 的devDependencies版本^5.0.0由yarn安装后以二进制形式在脚本中调用。4.3 一个容易忽略的细节deploy 的版本号参数README 写的是yarn deploy而脚本要求$1版本号两者需要配合理解发布时实际应执行yarn deploy 版本号例如yarn deploy 2.0.0。若不传版本号脚本会明确报错退出这是脚本内置的防呆设计确保每次发布都留下可追溯的版本标记。五、发布产物与内容映射从 sitemap 到线上 URL理解文档管线后可以把仓库目录 → 线上路径的映射关系总结如下docs2/site/sitemap.yml 中的Docs栏目挂载在/docs路径下每个菜单项dir file对应的 Markdown经插件createPages生成 slug 路由如 docs2/site/docs/getting-started/installation.md →/docs/getting-started/installation站点首页由 docs2/site/pages/landing.js配 docs2/site/pages/landing.css渲染指向/根路径404 页面由 docs2/src/pages/404.js 提供。也就是说文档站的内容与 docs2/site/docs 目录保持一一对应要新增或修改文档只需编辑对应的.md文件并在 sitemap.yml 中登记菜单项其余构建、路由、导航全部由 Gatsby 管线自动完成。六、结合仓库源码的进阶阅读指引如果你希望进一步深入这套文档系统仓库内提供了完整的可追溯材料菜单 → 页面生成docs2/plugins/docs/gatsby-node.js、docs2/plugins/docs/gatsby/sourceNodes.js站点与插件配置docs2/gatsby-config.js、docs2/package.json导航与页面组件docs2/src/components/SideNav.js、docs2/src/components/docs-page.js、docs2/src/utils/navigation.js发布脚本docs2/publish_docs.sh文档正文样例入门篇 docs2/site/docs/getting-started/installation.md、分析器总览 docs2/site/docs/analyzers/overview.mdsitemap 结构参考docs2/site/sitemap.yml。说明本文所述均为仓库现有实现事实。Node 版本约束、GitHub Pages 发布目标等属于 docs2/README.md 明确记载的运行前提脚本行为、路由生成规则等均可在上述源码文件中直接核对。若要在新环境复现发布流程请先确认你具备对graphql-dotnet.github.io仓库的写权限并按 README 要求锁定 Node 版本。七、小结本地预览文档站只需在docs2下依次执行yarn与yarn develop正式发布需满足两个前提目标仓库写权限、Node v10.22.0然后执行yarn deploy 版本号发布链路为publish_docs.sh→gatsby build产出public/→gh-pages -d public -b master推送到graphql-dotnet.github.io仓库整套站点由 docs2/site/sitemap.yml 单一文件驱动导航正文与 docs2/site/docs 目录一一映射新增文档只需加 Markdown 登记菜单两步。掌握这套流程你既能在本地快速预览 GraphQL .NET 官方文档也能在获得权限后完整复现其 GitHub Pages 发布过程更重要的是理解了 Gatsby 文档管线的组织方式为后续维护或借鉴这套文档方案打下了基础。赞分享后端【免费下载链接】graphql-dotnetGraphQL for .NET项目地址https://gitcode.com/gh_mirrors/gr/graphql-dotnet点击查看免费下载相关推荐在 shadcn-vue 中使用 Formisch 构建 schema-first 类型安全表单在 shadcn vue 中使用 Formisch 构建 schema first 类型安全表单 本指南完整讲解如何在 Vue 项目中基于 FormischUI组件前端基于 Jekyll 的 MXNet 官方文档站MXNet.io v2构建与发布指南基于 Jekyll 的 MXNet 官方文档站MXNet.io v2构建与发布指南 本文围绕仓库中的 docs/static_site/README.md深度学习机器学习人工智能Infer 官方站点开发指南基于 Docusaurus 3 的文档站安装、本地开发、构建与发布全流程Infer 官方站点开发指南基于 Docusaurus 3 的文档站安装、本地开发、构建与发布全流程 本篇指南以 website/README.md http静态分析代码质量开发工具上一篇Moto S3 后端实现全览S3Backend 支持的 API 能力、限制与配置指南下一篇AssetStudio终极指南5分钟掌握Unity资源提取与逆向分析技术创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考