Jekyll 可以使用来自不同 repo 的配置文件吗

the*_*ter 2 documentation github jekyll github-pages

我正在使用 Jekyll 和 GitHub Pages 为位于 GitHub 中组织帐户一部分的单独存储库中的项目创建文档。我的团队决定将文档与代码一起放在每个存储库中最有意义,因此我们将在每个存储库中使用 gh-pages 分支。

我还将从组织帐户中设置一个单独的 gh-pages 存储库作为登录页面。我想让我所有的 jekyll 配置项都存在于这个 repo 中。我需要在每个存储库的配置文件中放入什么才能从这个中心位置成功提取所有布局、css/scss 等?这甚至可能吗?

这是一个视觉表示

简而言之,我试图有一个地方可以更改网站格式文件,而不是 6。

Dav*_*uel 5

在 Github 页面上,您可以使用git submodules来使用来自另一个存储库的资源。

这适用于_layouts_sass,但遗憾的是不适用于_includes。这是因为在 Jekyll 2.x 中,您无法配置 _includes 文件夹路径。这已经在当前的 master 中提交,并且将在 Jekyll 3 发布并被 github 页面使用后立即可用。

编辑:使用 Jekyll 3,您现在可以配置includes_dir: _mydir. 请参阅Jekyll 配置文档

临时解决方案可以是在布局中合并包含,直到您能够配置_includes路径。不是很干净,但是,由于您的模板是集中式的,因此很容易重构。

如何

1 - 创建资源库

将您的组织存储库添加为子模块将拉取资源、帖子和页面。不是一个好方法,因为帖子和页面将出现在您的项目博客中。

更好的方法是将您的资源(_includes_layouts_sasscss)托管在位于 的专用存储库中github.com/userName/resources

在您的_layouts/default.html.

<link rel="stylesheet" href="{{ "/resources/css/main.css" | prepend: site.baseurl }}">
Run Code Online (Sandbox Code Playgroud)

2 - 项目博客设置

创建一个没有资源文件的项目博客并添加资源子模块。

git submodule add https://github.com/userName/resources.git
Run Code Online (Sandbox Code Playgroud)

这会resources在您的存储库中创建一个文件夹。

编辑您的_config.yml并添加:

layouts:  /resources/_layouts
sass:
    sass_dir: /resources/_sass
Run Code Online (Sandbox Code Playgroud)

你现在可以jekyll serve,它有效。

3 - 资源工作流

由于您的资源位于子模块中,因此模板或 sass 文件中的更改不会自动反映在您的博客中。

为了刷新您的博客,您必须为所有博客执行此操作。

git submodule update --remote
git commit -a -m 'resources update'
git push origin gh-pages
Run Code Online (Sandbox Code Playgroud)