【问题标题】:Challenges with ReadTheDocsReadTheDocs 面临的挑战
【发布时间】:2018-03-19 18:11:04
【问题描述】:

我的任务是托管我们的 Python API 文档以供客户访问。 ReadTheDocs.com 是一位同事推荐的。但是,我遇到了一些挑战:

  1. 默认方法是让 ReadTheDocs 完全访问我们的代码仓库,其中文档只是一个子文件夹。这是行不通的,也是不可能的。

  2. 所以我的下一个想法是将 Docs 文件夹复制到一个单独的 repo 中,并允许 ReadTheDocs 访问它。这里的问题是文档是从我们的代码自动生成的,因此这种方法会导致大量文档不完整。

  3. ReadTheDocs 似乎无法托管已构建的文档网站(即 index.html 等),但也许我对此有误?

我正在向遇到类似用例的其他人寻求帮助。您是否找到了一种方法让 ReadTheDocs 按您的要求工作,或者您是否转向了另一种方法来托管您的文档?如果是后者,您使用了什么方法?

我们需要版本控制(即 1.0.1、1.0.2 等),导出为 PDF 文件是理想的选择。

此致,

罗伯特·W.

【问题讨论】:

  • 为他们的咨询工作付费

标签: python documentation read-the-docs


【解决方案1】:

ReadTheDocs 指南

我在自己的许多项目中都使用过 ReadTheDocs,它确实是一个有用的平台。据我从您的问题中收集到的,您正在尝试从您的存储库(GitHub 存储库?)托管 HTML 文件。但是,ReadTheDocs 不是为托管 HTML 而设计的——它实际上使用Sphinx(一个用 Python 编写的文档构建系统)构建 ReStructuredText 或 Markdown 文件。以下是设置 ReadTheDocs 以托管您的文档的典型场景:

初始化文件

  1. 首先,使用 pip 安装 Sphinx - 阅读 this 以获取有关如何执行此操作的指南。
  2. 接下来,进入您计算机上的克隆存储库并在docs 文件夹中运行sphinx-quickstart必须是一个空文件夹)。
  3. 该命令应该会问你一些问题。选择以下答案:

    • Seperate source and build directories?: n
    • Project name:为您的项目提供一个简洁的面向公众的名称
    • Author name(s): 开发 API 的开发者姓名
    • Project release:您的 API 的当前版本

    其余的可以保持默认(按回车采用默认选项)

  4. 将创建的文件提交到您的 GitHub 存储库。
  5. 注册一个 ReadTheDocs 帐户并导入您的存储库。默认情况下,它会在你的仓库的根目录或docs 文件夹中构建它看到的任何东西(它会自动确定哪个)。如果一切顺利,您应该可以打开文档页面并查看演示页面。

编写和编辑文档

您现在应该可以编辑文件来创建文档了。 RTD 的设计基于“主题”,大多数页面使用https://github.com/rtfd/sphinx_rtd_theme。主题库通常会提供不错的安装文档。

要编辑您的页面,您需要编辑docs/index.rst。 RST 代表ReStructuredText,类似于 Markdown。你可以在互联网上找到它的备忘单。自动生成的文件如下所示:

.. Test documentation master file, created by
   sphinx-quickstart on Mon Mar 19 18:24:58 2018.
   You can adapt this file completely to your liking, but it should at least
   contain the root `toctree` directive.

Welcome to Test's documentation!
================================

.. toctree::
   :maxdepth: 2
   :caption: Contents:


Indices and tables
==================

* :ref:`genindex`
* :ref:`modindex`
* :ref:`search`

您可以从底部删除“索引和表格”部分 - 我不完全确定它的用途。

.. toctree:: 是一个通用菜单——您只需要在index.rst 中定义它,您可以在其他页面上忽略它。要创建新的文档页面,请创建一个新的 *.rst 文件。您所称的它将对应于它所呈现的.html 文件。例如,parameters.rst 可通过http://mydocs.readthedocs.org/en/latest/parameters.html 访问。要将parameters.rst 页面添加到您的菜单中,它需要如下所示:

.. toctree::
   :maxdepth: 2
   :captions: Contents:

   parameters

基本上,您需要将您的.rst 文件的名称(不带扩展名)添加到您的index.rst 文件中的.. toctree(而不是其他任何地方)。

应用更改

要应用您所做的更改并将其发布到您的 ReadTheDocs 页面,您只需将新的 .rst 文件提交到 GitHub 上的 master 分支,RTD 将自动为您构建和发布。

如果您还不太了解,RTD 不接受 .html 文件。您不应该将 任何 .html 文件提交到 GitHub,而应提交 .rst 文件。 .rst 文件将由 RTD 构建并发布。

版本

您可以使用 Git 标签来管理文档的版本。更多详细信息,请参阅http://docs.readthedocs.io/en/latest/versions.html(ReadTheDocs 官方文档)。

希望这有用!

【讨论】:

  • 朋友,谢谢您的回复。请原谅我没有更清楚。我们的文档采用 Sphinx 要求的格式。但是由于我们代码中的文档字符串的链接,我不能只是将文档复制到另一个仓库。而且我们无法为 ReadTheDocs 提供对我们代码的完全访问权限。鉴于这些限制,您会建议我们怎么做?
  • 不能为 RTD 提供对代码的完全访问权限是什么意思?它是一个私人的 Github 仓库吗? RTD 是自动化的,因此它只会读取您的文档源文件。
  • 明确地说,从技术上讲,我们当然可以提供对我们回购协议的访问权限,但管理层绝不会允许这样做。事实是,我们的技术不是开源的,而是我们非常谨慎地共享的专有技术。听起来 RTD 越来越不适合我们的需求。
【解决方案2】:

对于 API 文档,您可以使用 swaggerapidoc

【讨论】:

    【解决方案3】:

    如果您的项目在 GitHub 上,则可以使用 Github Actions 以及您选择的支持 PDF 生成的静态站点生成器 (SSG) 来满足您的要求。

    在最简单的形式中,创建一个 GH 动作来生成分支/发布的静态站点文件夹,然后将该文件夹推送到 GH 页面指向的分支中的相应文件夹,例如 gh-pages。应将其中一个分支/版本推送到根目录。 GitHub Pages Deploy Action 可能会有所帮助。将版本的下拉列表添加到指向匹配文件夹的静态网站。

    例子:

    ReadTheDocs 免费计划的好处:

    • 没有广告
    • 完全托管在 GitHub 上,无需第三方服务,也无需授权。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-08-25
      • 1970-01-01
      • 2017-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多