【问题标题】:How to generate a whole website in a variabilized sub-directory ? (Jekyll)如何在可变子目录中生成整个网站? (杰基尔)
【发布时间】:2018-01-16 15:02:47
【问题描述】:

我最近一直在玩 Jekyll,最近发现 S3 不允许我有足够的存储桶来为每个网站创建一个存储桶。

所以我正在努力弄清楚两件事

1) 我如何指定要创建一个“子”子目录,并且所有生成的网站文件都在其中?

2) 如何使用变量作为“子”子目录的名称? (因为每个网站都会有所不同)

baseurl 配置选项似乎对此没有任何作用。欢迎任何想法:-)

非常感谢,祝你有美好的一天!

【问题讨论】:

    标签: jekyll jekyll-theme


    【解决方案1】:

    但是,对于子子目录,我不确定变量选项:

    A) 如果您可以将内容直接放在 jekyll 内容中的“子”文件夹中,那么使用不同的配置文件通过构建属性来管理每个站点。请参阅以下示例下的示例。

    B) 如果你只是想把相同的内容放在不同的地方,也许你可以在不同的配置文件中使用不同的baseurldestination 属性?使用与以下相同的配置文件方法,但使用这些属性的不同版本,而不是/结合 exclude 属性(请参阅https://jekyllrb.com/docs/configuration/#serve-command-options)。

    示例:使用不同的配置文件

    在运行构建时,使用 exclude 配置属性排除文件夹(以及该文件夹的所有内容)。您还可以为每个站点、基本 URL 等指定不同的输出文件夹位置。我将重点介绍 exclude 属性,但您可以在文档中找到其他有用的属性:https://jekyllrb.com/docs/configuration/#global-configuration

    例如,您可能有以下文件/文件夹:

    /siteA-folder/siteA-content/blah.html
    /siteB-folder/siteB=content/meh.html
    /siteC-folder/siteC=content/foo.html
    config.yaml
    config_buildA.yaml
    config buildB.yaml
    

    使用构建选项 --config FILE1[,FILE2...] (https://jekyllrb.com/docs/configuration/#build-command-options) 显式调用您的自定义配置文件 A 或 B,每个文件都有自己的 exclude 属性版本。

    来自 config_buildA.yaml 的片段:

    exclude: 
      - /siteB-folder/ # While building A, you want to exclude the siteB folder and contents
      - /siteC-folder/ # Similarly, exclude siteC contents
    

    来自 config_buildB.yaml 的片段:

    exclude: 
      - /siteA-folder/ # While building B, you want to exclude the siteA folder and contents
      - /siteC-folder/ # Similarly, exclude siteC contents
    

    从命令行构建 A:

    jekyll build --config config_buildA.yaml
    

    从命令行构建 B:

    jekyll build --config config_buildB.yaml
    

    通过管理配置文件中的排除项,您可以重复使用通用模板和 css,并将所有内容放在一起(总体上使用更少的磁盘空间)。

    如果有共享内容,您还可以考虑使用更高级的功能includes(请参阅https://jekyllrb.com/docs/includes/)来管理包含文件夹中的共享内容,在 html 或 markdown 文件中引用(但这是越来越你的问题有点老套,所以我会停在那里......)

    编辑:我看到您已经编辑了问题,指定 baseurl 属性并不能满足您的要求。

    我使用了url 站点属性baseurldestination 的组合,如下所示。就我而言,我有不同的目的地,具体取决于它是存档还是最新内容,但如果你愿意,你可以使用它来构建不同的网络文件夹。

    例如:最新内容的配置

    url: http://example.com
    baseurl: "/latest/"
    destination: /path/to/latest/output/
    

    例如:存档内容的配置

    url: http://example.com
    baseurl: "/archive/content/"
    destination: /path/to/archive/output/
    

    然后,使用配置文件的多个版本,我可以调用任何适用的版本。

    【讨论】:

    • @ElFitz 澄清一下,“baseurl”告诉内容将使用哪个 URL 路径,但“destination”告诉内容在文件系统中的位置。如果您只更改 baseurl,这只会告诉内容“我将在 example.com/latest”或“example.com/archive”,但不会更改这些文件的实际构建位置。
    • 嗨,很抱歉我花了这么多时间来回答。出于某种原因,我无法让它工作,但那可能只是我,最终转移到 github 页面,每个网站有 1 个 repo。所以,我真的不知道它是否适用于我的情况。
    • 不用担心。希望有人能从中有所收获:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-27
    • 1970-01-01
    相关资源
    最近更新 更多