Jekyll 如何在可变的子目录中生成整个网站?(杰基尔)

Jekyll 如何在可变的子目录中生成整个网站?(杰基尔),jekyll,jekyll-theme,Jekyll,Jekyll Theme,我最近一直在和Jekyll玩,最近发现S3不允许我有足够的存储桶来为每个网站存储一个存储桶 所以我在努力弄明白两件事 1如何指定要创建“child”子目录,以及所有生成的网站文件都在其中 2如何使用变量作为“子”子目录的名称?因为每个网站都会有所不同 baseurl配置选项似乎对此没有任何作用。欢迎提出任何意见:- 非常感谢,祝你度过愉快的一天 但是,对于子目录,我不确定变量选项: A如果可以将内容直接放入jekyll内容中的子文件夹中,则使用不同的配置文件通过生成属性管理每个站点。请参见下面示

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

所以我在努力弄明白两件事

1如何指定要创建“child”子目录,以及所有生成的网站文件都在其中

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

baseurl配置选项似乎对此没有任何作用。欢迎提出任何意见:-


非常感谢,祝你度过愉快的一天

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

A如果可以将内容直接放入jekyll内容中的子文件夹中,则使用不同的配置文件通过生成属性管理每个站点。请参见下面示例下的示例

B如果你只是想把相同的内容放在不同的地方,也许你可以在不同的配置文件中使用不同的baseurl或destination属性?使用与下面相同的配置文件方法,但使用这些属性的不同版本,而不是/与exclude属性结合使用,请参见

示例:使用不同的配置文件 运行生成时,使用“排除配置”属性排除文件夹和该文件夹的所有内容。您还可以为每个站点、基本URL等指定不同的输出文件夹位置。我将重点介绍exclude属性,但您可以在文档中找到其他有用的属性:

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

/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
使用build选项-config FILE1[,FILE2…]显式调用自定义配置文件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
从命令行生成命令行:

jekyll build --config config_buildA.yaml
jekyll build --config config_buildB.yaml
从命令行生成B:

jekyll build --config config_buildA.yaml
jekyll build --config config_buildB.yaml
通过管理配置文件中的排除项,您可以重用通用模板和css,并使用更少的磁盘空间将所有内容保持在一起

如果有共享内容,您还可以考虑使用更高级的功能,includese,来管理includes文件夹中的共享内容,这些内容在html或标记文件中引用,但这对您的问题来说有点老生常谈,所以我就到此为止

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

我使用了url站点属性baseurl和destination的组合,如下所示。在我的例子中,我有不同的目的地,这取决于它是存档还是最新内容,但如果需要,您可以使用它来构建不同的web文件夹

例如:最新内容的配置

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页面,每个网站有一个回购。所以,我真的不知道这对我来说是否有效。不用担心。希望有人能从中有所收获: