Jekyll可以使用来自不同仓库的配置文件

时间:2015-10-13 22:53:12

标签: github documentation jekyll github-pages

我正在使用Jekyll和GitHub Pages为位于GitHub中的组织帐户中的单独存储库中的项目创建文档。我的团队已经决定将文档放在代码旁边的每个repo中是最有意义的,所以我们将在每个repo中使用gh-pages分支。

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

Here's a visual representation

简而言之,我正试图在一个地方对网站格式化文件进行更改,而不是6。

2 个答案:

答案 0 :(得分:2)

在Github页面上,您可以使用git submodules

来使用其他存储库中的资源

这适用于_layouts_sass,但遗憾的是不适用于_includes。这是因为,在Jekyll 2.x中,you cannot configure _includes folder path。这已经在当前的主服务器中提交,并且在Jekyll 3出现并且由github页面使用时将立即可用。

修改:使用Jekyll 3,您现在可以配置includes_dir: _mydir。请参阅documentation for Jekyll configuration

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

HOWTO

1 - 创建资源库

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

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

_layouts/default.html中,别忘了给你打电话:

<link rel="stylesheet" href="{{ "/resources/css/main.css" | prepend: site.baseurl }}">

2 - 项目博客设置

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

git submodule add https://github.com/userName/resources.git

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

修改您的_config.yml并添加:

layouts:  /resources/_layouts
sass:
    sass_dir: /resources/_sass

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

3 - 资源工作流程

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

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

git submodule update --remote
git commit -a -m 'resources update'
git push origin gh-pages

答案 1 :(得分:0)

在得到我的团队的反馈后,我最终做了以下事情:

  • 创建将成为GH-Pages网站来源的新回购
  • 将单个项目仓库添加为此仓库的子模块
  • 添加一个脚本,告诉jekyll从子模块中的特定文件夹中提取内容并将它们放在临时目录中,然后使用该临时目录作为构建源

#remove docs-build-temp folder if it exists

rm -rf ./docs-build-temp

#make temp-content folder

mkdir ./docs-build-temp

#copy content from doc folder in submodules into temp-content folder

cp -R ./submodule1/doc ./docs-build-temp/newdir1

cp -R ./submodule2/doc ./docs-build-temp/newdir2

#tell jekyll the content source

bundle exec jekyll build -s ./docs-build-temp

该脚本在本地和Travis CI *中运行。

*我在github中的用户acct和travis中的每个repos之间设置了ssh身份验证,以解决所有这些都是私有的事实。到目前为止似乎还没有成功。