首页/新闻资讯/正文详情

Read the Docs Monorepo 指南:在子目录中使用 `.readthedocs.yaml` 构建配置

发布时间:2026/9/26 2:38:27 来源:云帆数科 栏目:资讯中心
Read the Docs Monorepo 指南:在子目录中使用 `.readthedocs.yaml` 构建配置
后端文档【免费下载链接】readthedocs.orgThe source code that powers readthedocs.org项目地址https://gitcode.com/gh_mirrors/re/readthedocs.org点击查看免费下载本指南讲解如何在 Read the Docsreadthedocs.org中为一个 Git 仓库配置自定义的.readthedocs.yaml构建配置文件路径从而在单个 Monorepo 中管理多个拥有独立构建配置的文档项目。读完本文你将掌握自定义构建配置路径的完整设置流程、路径解析规则、跨版本影响与风险以及与之配套的项目级最佳实践。为什么 Monorepo 需要自定义构建配置路径默认情况下Read the Docs 会在 Git 仓库的顶层目录查找.readthedocs.yaml文件并使用它作为构建配置。对于仓库中只包含一个文档项目的情况这种约定完全够用但当一个 Git 仓库中同时包含多个文档项目、且它们需要不同的构建配置时单一顶层的配置文件就无法满足需求了。典型场景如下your-monorepo/ ├── .readthedocs.yaml # 顶层配置若存在 ├── docs-a/ │ ├── .readthedocs.yaml # 项目 A 的独立构建配置 │ ├── conf.py │ └── requirements.txt └── docs-b/ ├── .readthedocs.yaml # 项目 B 的独立构建配置 ├── mkdocs.yml └── requirements.txt此时你需要在仓库的多个子目录中各放置一个.readthedocs.yaml并在 Read the Docs 中为每个项目指定其对应的配置文件路径。这就是本文要解决的核心问题如何在项目设置中指定一个自定义的构建配置文件路径。两种值得关注的替代方案在决定采用“多份配置文件”的方案之前可以先评估以下两种替代做法Sphinx 多项目扩展sphinx-multiproject如果你只使用 Sphinx 项目并且希望所有子项目共享同一份构建配置可以考虑sphinx-multiproject扩展它可以在单个 Sphinx 构建中输出多个项目。共享配置文件 环境变量如果你的多个文档项目配置模式非常相似、且使用的文档工具相同也可以通过环境变量复用同一份配置文件。Read the Docs 支持在项目设置中为不同项目配置不同的环境变量从而实现“一份配置、多项目差异化”。相关背景可参考 环境变量指南。实现前提与关键限制在动手配置之前需要明确这个功能当前的几个重要约束1. 功能是项目级的project-wide自定义构建配置文件路径是一个项目级project-wide设置该路径一旦设定将应用于该项目的所有版本。也就是说你无法为同一项目的不同版本指定不同的配置文件路径。2. 配置文件内的路径始终相对于仓库根目录这是最容易踩坑的一点无论.readthedocs.yaml文件本身位于仓库的哪个子目录文件内引用的所有路径都始终相对于仓库根目录repository root解析。举例说明假设你的配置文件位于docs/.readthedocs.yaml而 requirements 文件位于docs/requirements.txt那么在配置文件中仍然要写python: install: - requirements: docs/requirements.txt而不是写成requirements.txt。唯一的例外是Sphinx 构建命令本身该命令会从包含conf.py的目录执行。这只会影响 Sphinx 在内部解析的路径例如conf.py中引用的路径不会改变.readthedocs.yaml中路径的解释方式。3. 修改配置路径会影响所有版本警告更改配置文件的路径会应用到所有版本。如果该路径被修改项目中不同版本的文档可能无法再次构建成功——因为旧版本对应的提交中新的配置路径可能并不存在。从同一个仓库添加多个文档项目自定义构建配置路径的完整流程分为两步添加第一个项目通过导入向导Import Wizard将 Git 仓库添加为第一个 Read the Docs 项目具体入口见 导入项目指南。重复添加第二个项目完成第一个项目后需要再次执行同样的导入流程将同一个仓库添加为第二个 Read the Docs 项目。注意每添加一个文档项目都需要重复一次导入流程。每个项目在 Read the Docs 中被视为独立实体从而获得独立的构建配置、版本和发布设置。设置自定义构建配置文件路径导入仓库之后为需要自定义配置路径的项目执行以下操作进入项目的Admin管理页面点击Settings设置在表单中找到Build configuration file构建配置文件字段填入相对于仓库根目录的配置路径例如docs/.readthedocs.yaml点击Save保存。保存之后需要确保项目的相关版本被重新构建新的配置文件才会生效。提示多个不同的构建配置文件会让 Monorepo 变得复杂。建议先在 Monorepo 中搭建 12 个文档项目确保它们能够成功构建并发布再逐步把更多项目加入进来。配置路径的校验规则与源码实现在 readthedocs.org 源码中Build configuration file字段对应的模型字段是Project.readthedocs_yaml_path定义于 readthedocs/projects/models.py。该字段的最大长度为 1024 字符留空时使用默认值.readthedocs.yaml并挂接了validate_build_config_file校验器。校验器实现位于 readthedocs/projects/validators.py它对用户输入做了一系列安全与合法性检查必须以相对路径开头路径不能以/开头它是相对于仓库根目录的不能以/结尾路径不能以/结束因为该字段指向的是文件而非目录禁止..序列不允许出现..防止路径穿越path traversal禁止非法字符不允许出现[]{}()\ %|, 等字符文件名必须合法仅允许文件名恰好为.readthedocs.yaml或以/.readthedocs.yaml结尾即路径必须指向一个名为.readthedocs.yaml的文件。配置加载的底层流程构建时readthedocs.org 通过load_yaml_configreadthedocs/doc_builder/config.py加载构建配置。它会先取得版本的 checkout 路径然后调用readthedocs.config.loadreadthedocs/config/config.py完成解析。load函数的逻辑清晰地体现了两种查找模式自定义路径如果项目设置了readthedocs_yaml_path则将该路径与 checkout 根目录拼接后直接定位文件若文件不存在会抛出CONFIG_PATH_NOT_FOUND错误默认模式在仓库根目录使用正则^\.?readthedocs.ya?ml$定义于 readthedocs/config/config.py查找第一个匹配的配置文件查找逻辑见 readthedocs/config/find.py。解析完成后文件内容经 YAML 解析器readthedocs/config/parser.py校验为合法的 mapping再由BuildConfigV2.validate()对formats、build、python、conda、sphinx、mkdocs、submodules、search等配置键逐一校验。其中python.install.requirements、sphinx.configuration、mkdocs.configuration等路径型配置项都会通过validate_path以base_path配置文件的目录为基准解析为绝对路径——这也从源码层面印证了“配置内路径相对仓库根目录”的规则因为base_path是由source_file的目录推导出的而配置文件的路径本身是相对仓库根目录给出的。相关测试用例位于 readthedocs/projects/tests/test_build_tasks.py其中TestBuildTask.test_config_file_is_loaded等用例验证了自定义配置文件路径被正确传入并加载例如在测试中通过readthedocs_yaml_pathunique.yaml模拟自定义路径API v3 的测试 readthedocs/api/v3/tests/test_projects.py 也覆盖了带有readthedocs_yaml_path的项目导入场景。为每个文档项目配置独立的项目设置Monorepo 方案落地并验证通过后你还可以充分利用 Read the Docs “每个项目独立”的平台能力为每一个文档项目单独配置维护者团队为每个项目设置独立的维护者集合商业版还可使用 组织Organizations 功能自定义重定向规则见 自定义域名与重定向指南自定义域名为不同文档绑定各自的域名自动化规则见 自动化规则文档流量分析见 流量分析文档独立的文档工具与构建流程一个项目可能使用 Sphinx另一个项目可能使用 Asciidoctor 等工具各自拥有独立的构建过程见 构建自定义文档。以及更多——Read the Docs 中所有项目级设置都可以应用到每个独立项目上。补充如果希望将一个文档项目嵌套在另一个项目内部例如作为子项目展示仍然可以在同一 Monorepo 基础上使用子项目Subprojects功能详见 子项目指南。其他建议条件构建取消规则对于 Monorepo 而言一个不理想的行为是与某个文档无关的其他子目录变更也会触发该文档项目的重新构建造成不必要的构建资源消耗。为此建议为每个文档项目配置条件构建取消规则conditional build cancellation rules。这些规则写在每个文档项目各自的.readthedocs.yaml中从而可以为 Monorepo 中的每一个文档项目编写一条独立的“何时跳过/取消构建”规则例如只在相关目录发生变化时才触发构建。配置方法见 跳过或取消构建指南。小结Monorepo 构建配置清单将以上内容整理为一份可执行的落地清单在仓库的每个文档子目录中放置各自的.readthedocs.yaml通过导入向导为同一个仓库创建多个 Read the Docs 项目在每个项目的Admin → Settings中将Build configuration file指向对应的配置文件相对仓库根目录牢记配置文件内所有路径相对仓库根目录解析Sphinx 构建命令除外保存后重新构建相关版本并验证每个项目都能独立发布先在 12 个项目上跑通再推广到全部项目为每个项目配置独立的维护者、域名、重定向、自动化规则与构建工具在每个配置文件中添加条件构建取消规则避免无关变更触发构建。遵循以上步骤你就能在单个 Git 仓库中以清晰、可控的方式托管多个文档项目同时保留 Read the Docs 平台每个项目独有的全部灵活性。赞分享后端文档【免费下载链接】readthedocs.orgThe source code that powers readthedocs.org项目地址https://gitcode.com/gh_mirrors/re/readthedocs.org点击查看免费下载相关推荐在 Read the Docs 上部署 Antora 文档站点.readthedocs.yaml 最小配置与构建原理在 Read the Docs 上部署 Antora 文档站点.readthedocs.yaml 最小配置与构建原理 本指南讲解如何在 Read the Do后端文档Read the Docs 配置全解从零编写 .readthedocs.yaml 到源码级校验原理Read the Docs 配置全解从零编写 .readthedocs.yaml 到源码级校验原理 .readthedocs.yaml 是 Read the后端文档在 Read the Docs 上部署 Docusaurus 站点配置、构建与集成指南在 Read the Docs 上部署 Docusaurus 站点配置、构建与集成指南 导读 本文基于 Read the Docs 官方文档 docs/use后端文档上一篇MediaPipe光流估计重塑视频运动分析的终极解决方案下一篇终极文件编码检测与转换指南EncodingChecker工具完全解析创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关推荐

无需 API 密钥:本地部署 Open-Meteo 免费气象数据 API
无需 API 密钥:本地部署 Open-Meteo 免费气象数据 API

无需 API 密钥:本地部署 Open-Meteo 免费气象数据 API 【免费下载链接】open-meteo Free Weather Forecast API for non-commercial use 项目地址: https://gitcode.com/GitHub_Trending/op/open-meteo Open-Meteo 是一个开源的免费气象数据 API,… · 2026/9/26 2:38:21

OpenCodex 夜间 Issue 分诊实录:从 11 个报告到三桶分类与源码级修复路线
OpenCodex 夜间 Issue 分诊实录:从 11 个报告到三桶分类与源码级修复路线

【免费下载链接】opencodex Universal provider proxy for OpenAI Codex & Claude Code — use any LLM (Claude, Gemini, Grok, DeepSeek, Ollama…) with Codex CLI, App, SDK, and Claude Code 项目地址: https://gitcode.com/gh_mirrors/ope/opencodex 点击… · 2026/9/26 2:38:21

Apify MCP Server 端到端测试套件深度解析:用 mcpc + jq 为 v1 协议面建立行为基线
Apify MCP Server 端到端测试套件深度解析:用 mcpc + jq 为 v1 协议面建立行为基线

【免费下载链接】apify-mcp-server The Apify MCP server enables your AI agents to extract data from social media, search engines, maps, e-commerce sites, or any other website using thousands of ready-made scrapers, crawlers, and automation tools available on… · 2026/9/26 2:38:21

MouseKeyShow:Windows原生级操作可视化工具原理与实践
MouseKeyShow:Windows原生级操作可视化工具原理与实践

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

AI 实时流式推理架构深度解析:从 SSE 到 WebSocket/gRPC Stream 的协议设计与优化——TaoToken 统一 Key 下的配置骨架与连通性验证
AI 实时流式推理架构深度解析:从 SSE 到 WebSocket/gRPC Stream 的协议设计与优化——TaoToken 统一 Key 下的配置骨架与连通性验证

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

2026出差拜访客户要整理录音 华为平板录音转文字哪个好成本分析:TaoToken统一Key接入配置与验证
2026出差拜访客户要整理录音 华为平板录音转文字哪个好成本分析:TaoToken统一Key接入配置与验证

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

Spring AI 提示词技巧:用 CO-STAR 与 Cursor Rules 打造可复用的 Prompt 配置骨架
Spring AI 提示词技巧:用 CO-STAR 与 Cursor Rules 打造可复用的 Prompt 配置骨架

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

智能文档OCR识别系统实战:从扫描件到结构化字段的完整链路
智能文档OCR识别系统实战:从扫描件到结构化字段的完整链路

简介:智能文档OCR识别系统是一套面向计算机视觉与深度学习方向的毕业设计、课程设计参考方案,适合具备一定Python基础、希望实践目标检测与文字识别的高校学生及开发者。系统以YOLO算法为核心,结合CNN特征提取与RNN/LSTM序列建模,… · 2026/9/26 3:24:23

你的电脑缺一个「数字员工」——OpenClaw 本地部署手把手教学:用 TaoToken 统一 Key 打通配置文件
你的电脑缺一个「数字员工」——OpenClaw 本地部署手把手教学:用 TaoToken 统一 Key 打通配置文件

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

数据库课后习题答案别硬背:当测试用例集刷,效率翻倍
数据库课后习题答案别硬背:当测试用例集刷,效率翻倍

简介:万常选版《数据库原理与设计》课后习题答案资源,覆盖第2至6章及第9章,适合正在学习关系模型、数据库建模、关系数据理论与模式求精的本科生、自学者作为复习与自测材料。压缩包共7个文件,含3个doc参考答案、2个sql示例脚本、… · 2026/9/26 0:00:21

OpenClaw 替代品?Hermes Agent 踩坑实录:macOS 飞书接入 TaoToken 配置
OpenClaw 替代品?Hermes Agent 踩坑实录:macOS 飞书接入 TaoToken 配置

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

向下兼容与向上兼容:接口设计中的兼容性策略与工程实践
向下兼容与向上兼容:接口设计中的兼容性策略与工程实践

一次版本升级事故,是很多团队绕不过去的坎。线上环境里,服务端明明已经上线了新版接口,老的移动端还在照着旧文档传参数。请求一到网关,校验直接拒绝,用户操作失败,客服群炸了锅,开发群里开始互… · 2026/9/26 0:00:46

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码