我正在使用Jekyll和GitHub Pages为位于GitHub中的组织帐户中的单独存储库中的项目创建文档。我的团队已经决定将文档放在代码旁边的每个repo中是最有意义的,所以我们将在每个repo中使用gh-pages分支。
我还将从组织帐户设置一个单独的gh-pages repo作为登录页面。我想让我所有的jekyll配置项都存在于这个回购中。我需要在每个repos的配置文件中放置什么来成功从这个中心位置拉出所有布局,css / scss等?这甚至可能吗?
Here's a visual representation
简而言之,我正试图在一个地方对网站格式化文件进行更改,而不是6。
答案 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
路径。不太干净,但是,由于您的模板是集中的,因此很容易重构。
将您的组织存储库添加为子模块将同时提取资源,帖子和页面。不是一个好的方法,因为帖子和页面将出现在您的项目博客中。
更好的方法是将您的资源(_includes
,_layouts
,_sass
,css
)托管在github.com/userName/resources
的专用存储库中。
在_layouts/default.html
中,别忘了给你打电话:
<link rel="stylesheet" href="{{ "/resources/css/main.css" | prepend: site.baseurl }}">
创建没有资源文件的项目博客,并添加资源子模块。
git submodule add https://github.com/userName/resources.git
这会在您的存储库中创建一个resources
文件夹。
修改您的_config.yml
并添加:
layouts: /resources/_layouts
sass:
sass_dir: /resources/_sass
您现在可以jekyll serve
,它有效。
由于您的资源位于子模块中,模板或sass文件中的更改不会自动反映在您的博客中。
为了刷新您的博客,您必须为所有博客执行此操作。
git submodule update --remote
git commit -a -m 'resources update'
git push origin gh-pages
答案 1 :(得分:0)
在得到我的团队的反馈后,我最终做了以下事情:
#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身份验证,以解决所有这些都是私有的事实。到目前为止似乎还没有成功。