尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

howdoi 文档贡献指南:使用 MkDocs 参与开源文档协作的完整流程

howdoi 文档贡献指南:使用 MkDocs 参与开源文档协作的完整流程 howdoi 文档贡献指南使用 MkDocs 参与开源文档协作的完整流程【免费下载链接】howdoiinstant coding answers via the command line项目地址: https://gitcode.com/gh_mirrors/ho/howdoi本指南面向希望为 howdoi 项目改进官方文档的开发者以 docs/contributing_docs.md 为骨架完整梳理从环境准备、MkDocs 本地构建到提交文档改动并合并 PR 的每一步。读完本文你将掌握 howdoi 文档站点的渲染机制基于 MkDocs Material 主题、导航配置mkdocs.yml的修改方法以及一套可复现、可自检的文档贡献工作流让你的改动顺利通过 review 并入主仓库。一、howdoi 文档与 MkDocs 的关系howdoi 是一个通过命令行即时获取编程答案的工具instant coding answers via the command line其官方文档并不是静态 HTML而是使用 Python 生态的静态站点生成器MkDocs渲染的。仓库根目录的 mkdocs.yml 是文档站点的唯一配置入口docs/目录下每个.md文件对应一个页面主题采用materialMaterial for MkDocs并配置了toc目录锚点、admonition提示框、codehilite代码高亮、pymdownx.snippets代码片段引入、pymdownx.superfences含 Mermaid 图等扩展导航nav字段按顺序列出站点栏目其中Contributing documentation一节正是 contributing_docs.md 自身这说明本文档即站点的一个正式页面。因此任何对文档的改动都必须遵循改 Markdown → 在本地用 MkDocs 构建验证 → 提交 PR的流程而不是直接改发布产物。二、贡献文档前的环境准备贡献文档的流程与常规代码贡献基本一致差异仅在于额外需要安装并构建 MkDocs。请先阅读 docs/contributing_to_howdoi.md 了解整体的 PR 协作规范找 issue、创建分支、提交 PR 等再按下面步骤补齐文档环境。1. 安装 MkDocs在命令行执行pip install mkdocs如果需要完全复刻 howdoi 文档站点的渲染效果建议按 docs/contributing.md 中Documentation一节的建议安装配套包从而支持主题、代码高亮与文件包含等特性pip install mkdocs-material markdown-include2. 理解 MkDocs 常用命令命令作用python -m mkdocs new [dir-name]创建一个新的 MkDocs 项目骨架python -m mkdocs serve启动本地文档服务器支持实时重载live-reload修改 Markdown 后浏览器自动刷新python -m mkdocs build构建静态站点产物默认输出到site/目录python -m mkdocs help打印全部可用命令的帮助信息3. 项目的文档布局howdoi 的文档布局遵循 MkDocs 约定mkdocs.yml # 站点配置主题、导航、扩展 docs/ index.md # 文档首页 ... # 其他 Markdown 页面、图片与资源文件从 mkdocs.yml 的nav配置可以看到howdoi 文档共包含首页、Introduction、Usage、开发环境搭建、代码贡献、文档贡献、扩展开发、高级用法、故障排查、Windows 开发等栏目新增页面时同样要挂到这套导航树上。三、提出文档改进的 Issue在动手写任何文档之前先在 GitHub 上以新建 Issue的方式提出你的文档改进方案通过 Issues 页面的新建入口new/choose路径创建 issue说明你想补充或修正哪个页面、原因是什么等待维护者在 issue 中确认/批准你的方案只有在 issue 获批之后才进入写代码、改文档的阶段并基于该 issue 创建对应的 Pull Request。这一步的意义在于避免重复劳动如果某个文档改动已经在 issue 中被讨论或已被他人认领直接提交 PR 很可能被拒绝。四、动手修改文档新建页面与更新导航1. 创建新分支从主分支切出一个新的功能分支保证你的文档改动与主线隔离方便后续 reviewgit checkout -b docs/add-xyz-guide2. 添加 Markdown 文件进入howdoi/docs/目录即仓库根下的 docs/新增一个.md文件。文件命名建议语义化例如howdoi_advanced_usage.md、troubleshooting.md这类现有命名风格便于在导航中直观呈现。3. 在 mkdocs.yml 的 nav 中登记仅添加文件还不够——站点不会自动发现新页面。你需要打开 mkdocs.yml在nav列表中加入一行格式为显示名称: 文件名。参考现有写法nav: - howdoi: index.md - Introduction: introduction.md - Usage: usage.md - Setting up development environment: development_env.md - Contributing: contributing_to_howdoi.md - Contributing documentation: contributing_docs.md - Extension development: extension_dev.md - Howdoi advanced usage: howdoi_advanced_usage.md - Troubleshooting: troubleshooting.md - Development for Windows: windows-contributing.md如果你新增了docs/new_page.md就追加一行例如- New page: new_page.md并将其放到希望出现的栏目位置。nav中的顺序即站点侧边栏的展示顺序。4. 本地预览验证在仓库根目录包含mkdocs.yml的目录打开终端依次执行mkdocs build mkdocs servemkdocs build会检查所有 Markdown 的语法与配置是否合法并生成完整站点mkdocs serve会启动本地服务器默认http://127.0.0.1:8000实时预览你的页面效果包括导航顺序、代码高亮与提示框渲染。确认无误后再提交改动、推送分支并创建 PR。五、值得在文档中使用的 MkDocs 高级特性howdoi 的 mkdocs.yml 已启用多组 Markdown 扩展编写文档时可以善加利用使页面信息层级更清晰。以下用法在 docs/contributing.md 中有完整示例可直接参考1. Admonition 提示框admonition 扩展使用!!!加类型关键字创建醒目的提示块支持attention、caution、warning、danger、error、hint、important、tip、note等类型也可以自定义标题!!! tip Include instructions on how to reproduce the bug you found or specific use cases of a requested feature. !!! tip 自定义标题 使用 !!! type Custom Title 可以指定提示类型并自定义标题文字。2. 直接引入源码文件pymdownx.snippets 扩展通过{!路径!}语法可以把任意文件内容原样嵌入文档非常适合展示源码、配置或代码片段且保证内容与仓库实时同步。例如嵌入howdoi/__init__.pyPython {!../howdoi/__init__.py!}注意{!...!} 需要放在代码块内且路径相对于 docs/ 目录对应 [mkdocs.yml](https://link.gitcode.com/i/d644314384311a059b5bc16adf2230e6) 中 pymdownx.snippets.base_path: docs 的配置。 ### 3. 选项卡pymdownx.tabbed 扩展 用 创建多语言或多方案切换的选项卡例如同时展示 Python 与 Golang 的示例 markdown Python python def main(): print(Hello world) Golang go package main import fmt func main() { fmt.Println(Hello world) } 此外mkdocs.yml 还启用了pymdownx.superfences的 Mermaid 自定义 fence可以在文档中绘制架构图/流程图适合用来解释 howdoi 的命令行检索流程。六、提交前自检测试与 Lint虽然文档改动通常不涉及 Python 代码但作为开源贡献你的 PR 依然要满足 howdoi 的质量门槛。仓库在 docs/contributing.md 中明确了要求PR 必须通过全部测试且不能有 flake8 或 pylint 错误。1. 运行测试howdoi 使用 Python 标准库unittest编写测试见 test_howdoi.py本地执行python -m test_howdoi也可以只跑指定的测试类或方法python -m unittest test_howdoi.TestClass.test_method建议在激活虚拟环境source .venv/bin/activate后运行并安装 requirements/dev.txt 中列出的开发依赖flake85.0.4、pylint2.15.10、nose2、pre-commit等。2. 运行 Lint仓库在 setup.py 中定义了一个自定义命令Lint它会依次执行flake8 --config.flake8rc .pylint howdoi *.py --rcfile.pylintrc可以通过一条命令完成两项检查python setup.py lint其中 .flake8rc 配置了max-line-length 119并忽略部分 E/F 类错误.pylintrc位于仓库根目录同样把行宽限制为 119 字符。你也可以单独运行flake8 pylint *3. 提交 PR 并等待 Review当测试与 Lint 全部通过后将你的分支推送并创建 PR在 PR 描述中关联之前批准的 issue。等待维护者 review 并合并即可。整个流程可以概括为提出 Issue → 获得批准 → 创建分支 → docs/ 新增 .md → mkdocs.yml 更新 nav → mkdocs build/serve 验证 → 测试 Lint 自检 → 提交 PR → Review 合并七、常见问题与注意事项不要直接运行python howdoi/howdoi.py仓库文档明确指出直接执行模块文件缺少-m可能触发ValueError: Attempted relative import in non-package应使用python -m howdoi QUERYmkdocs serve无法启动请确认当前目录是仓库根目录存在mkdocs.yml并确认mkdocs已正确安装若涉及 Material 主题或 snippet 语法请安装mkdocs-material markdown-include新增页面未出现在导航99% 的情况是忘记在 mkdocs.yml 的nav中登记检查文件路径与名称是否一致代码块中使用了{!...!}但未生效确认启用了pymdownx.snippets扩展且路径基准是docs/目录。遵循以上流程你就能安全、高效地为 howdoi 贡献高质量文档并让每一处改动都可被维护者快速审查与合并。【免费下载链接】howdoiinstant coding answers via the command line项目地址: https://gitcode.com/gh_mirrors/ho/howdoi创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表