在任何路径上的Sphinx输出中包含文件

时间:2018-01-31 14:49:54

标签: python python-sphinx

我有一个项目,我记录了我最终得到的结构

docs/
conf.py
development/
    architecture.rst
    uimockups/
        index.html
        static/
            <supporting css and js files>
        mockup1/
            index.html
            ui1.html
            ui2.html
        mockup2/
            index.html
            ui1.html
            ui2.html

uimockups下的所有内容都只是一个静态网站。出于组织原因,我真的希望保留文件夹结构,并希望直接将uimockups复制到build/development/uimockups,这样我就可以从architecture.rst文件链接到它。

我已经在网上搜索过,但我能找到的大部分内容都与用于自定义CSS的_static文件夹有关。我想要的只是将整个文件夹复制到HTML构建输出中的相应位置。如果没有编写自定义扩展,这可能吗? sphinx可以通过单独的配置执行这个简单的任务吗?

1 个答案:

答案 0 :(得分:1)

好吧,我想出了一个解决方案,但这不是我认为的最佳解决方案。

由于我希望能够在python -m http.server文件夹中执行docs/development/uimockups并使其正常工作,我最终:

  1. docs/development/uimockups/static重命名为docs/development/uimockups/_static
  2. 根据需要更改所有.html个文件以引用./_static../_static中的文件,而不是使用绝对/static路径。
  3. 'development/uimockups'添加到html_static_path
  4. 中的conf.py变量

    这最后一步相当于添加cp development/uimockups/* $BUILD/_static/,所以虽然不是很理想但我最终还是

    $BUILD/
        _static/
            _static/     # From uimockups/
                <supporting files>
            index.html   # From uimockups/
            mockup1/
                ui1.html
                ui2.html
            mockup2/
                ui1.html
                ui2.html
    

    然后我可以在我的第一个文件中使用`link text </_static/index.html>`_链接到此。

    我真的不喜欢我只需将其推入$BUILD/_static文件夹,我不能只将其显示在$BUILD/development/uimockups中,但这并不需要我至少写任何代码。它绝对不可扩展,如果我有多个“静态子站点”,那么它们可能会踩到彼此的资源。解决这个问题的一种方法是

    docs/
        development/
            uimockups-site/
                uimockups/
                    index.html
                    mockup1/
                    mockup2/
                    _static/
    

    然后将development/uimockups-site添加到我的html_static_path列表中,以便输出

    $BUILD/
        _static/
            uimockups/
                index.html
                mockup1/
                mockup2/
                _static/