maj*_*jom 43 ruby jekyll jekyll-bootstrap
Jekyll有很多主题,例如https://github.com/jekyll/jekyll/wiki/Themes.
在EXISTING Jekyll安装中切换到新主题的最简单方法是什么?
Dan*_*ker 36
这就是我改变现有Jekyll安装主题的方法.调整这些说明以满足您的需求.
我们创建一个新的孤儿分支newtheme并确保它是空的.
git checkout --orphan newtheme
git rm -rf .
git clean -dfx
Run Code Online (Sandbox Code Playgroud)
然后我们通过将主题添加为上游远程来将主题文件拉入其中.在这个例子中,我拉出John Otander的Pixyll主题master分支.
git remote add upstream https://github.com/johnotander/pixyll.git
git fetch upstream
git pull upstream master
Run Code Online (Sandbox Code Playgroud)
构建主题并测试它.
bundler install
jekyll serve
Run Code Online (Sandbox Code Playgroud)
现在我们合并我们的帖子,配置等.您可以使用Git checkout从旧的Jekyll站点复制文件或文件夹.请注意,这将覆盖主题的文件(如果存在).
git checkout master -- _posts
Run Code Online (Sandbox Code Playgroud)
或者,您可以使用新名称复制文件,例如手动合并.
git show master:_config.yml > _config.yml.old
Run Code Online (Sandbox Code Playgroud)
如果您意外地覆盖了主题文件,则可以将其还原.
git checkout upstream/master -- about.md
Run Code Online (Sandbox Code Playgroud)
这些是我必须复制,合并,调整或删除的文件:
_posts文件夹中的帖子._drafts文件夹中的草稿._config.yml配置文件.Gemfile宝石文件.CNAME文件(适用于GitHub页面).Rakefile(如果有的话).提交您的更改,不要忘记再次测试主题.
最后,我们用master新newtheme分支替换现有分支.假设我们在newtheme分支机构:
git checkout newtheme
git merge -s ours master
git checkout master
git merge newtheme
Run Code Online (Sandbox Code Playgroud)
推动更改.
git push
Run Code Online (Sandbox Code Playgroud)
并清理当地newtheme分行.
git branch -d newtheme
Run Code Online (Sandbox Code Playgroud)
而已!您已成功替换主题.如果我遗漏了任何内容,或者您有任何要添加的内容,请发表评论.
如果您以后想要更新主题以包含最新的上游更改,只需:
git pull upstream master
Run Code Online (Sandbox Code Playgroud)
并修复任何合并冲突.在这里,我假设upstream遥控器仍然设置为主题的存储库(你可以检查一下git remote -v).
mat*_*aly 17
虽然你可以通过派生一个新的主题迁移到现有的安装,然后通过类似CSS资源手动复制和粘贴,JS,HTML中_includes,_layouts您可能需要其他文件,这可能不是一个好主意,你最终不得不混合旧资源和新资源,可能名称不同,但在它们所处的场景中(例如,您没有覆盖帖子引用的旧样式表),它会导致混合的CSS样式你必须调试并慢慢修复.
因为我假设你有一个使用Git的Jekyll安装(如果你不是真的应该),你可以创建一个名为的分支new-theme并从master作为工作分支切换到该分支.(这样的简单方法是复制整个Jekyll安装并将其粘贴到其他地方,old-Jekyll-install就像你不想处理Git分支一样(但实际上,你应该.这是一个帮助我学习的教程)
_posts和自定义更改._config.yml通过手动比较它们并移动到必要的位置来移植您的端口.<br \>为间距添加了一些标签,而你不想在新主题中使用它).master(或将其推向生产)可以说这一切都是相当手动和痛苦的,但至少你不必处理资源冲突.这样做的缺点是您的存储库不会与主题仓库同步.所以你不会获得上游更新.我仍然会建议您分配主题仓库,为您的Jekyll站点的个人自定义设置移植,然后将该仓库重命名为生产.(这当然不再使用'现有的'Jekyll安装)
Oha*_*der 10
Jekyll v3.2引入了基于宝石的主题(未来计划见此处):
基于宝石的主题使主题开发人员可以轻松地向拥有主题gem的任何人提供更新.当有更新时,主题开发人员将更新推送到RubyGems
基于宝石的主题的目标是让您获得强大的,不断更新的主题的所有好处,而不会让所有主题的文件妨碍您,并且过度复杂化可能是您的主要焦点:创建内容.
安装基于gem的主题很简单:
gem "jekyll-theme-awesome"bundle install._config.yml以激活主题:theme: jekyll-theme-awesomebundle exec jekyll serve要切换主题,我相信这样的事情应该有效:
gem "jekyll-theme-new"bundle install_config.yml以引用新主题:theme: jekyll-theme-newbundle exec jekyll servebundle show jekyll-theme-awesome)并将其卸载gem uninstall jekyll-theme-awesome.为了安全起见,请确保其文件夹确实已删除.更新基于宝石的主题很简单:
如果您有主题gem,您可以(如果您愿意)运行
bundle update以更新项目中的所有gem.或者你可以运行bundle update <THEME>,替换为主题名称,例如minima,只更新主题gem.主题开发人员所做的任何新文件或更新(例如样式表或包含)都将自动提取到您的项目中.
重要提示:在撰写本文时,GitHub页面仅支持一组特定的基于宝石的主题:建筑师,开曼,丁克,黑客,闰日,梅鹿辄,午夜,迷你,最小,现代,板岩,触觉和时间机器.其中,似乎只有Minima是面向博客的(例如,它是唯一具有内置Disqus支持的人).但是,如果您愿意自己运行Jekyll构建过程,则应该能够使用任何主题.
我对此进行了测试,但我是在一个没有任何想要保存的内容的项目中进行的,并且主题相当简单,因此随着复杂性的增加,这可能不会很好地工作。
为了安全起见,创建一个新分支
git checkout -b newtheme
Run Code Online (Sandbox Code Playgroud)然后将新主题添加为远程主题
git remote add new-theme-upstream https://github.com:drjekyllthemes/jekyll-minimal-theme.git
git pull new-theme-upstream HEAD
Run Code Online (Sandbox Code Playgroud)git status,希望这些冲突应该只出现在您要覆盖的样式文件中。如果您想保留任何文件,您可以使用文本编辑器编辑它们:git 将在文件中标记更改 推送到你的原点
git push origin newtheme
Run Code Online (Sandbox Code Playgroud)
git pull new-theme-upstream您可以将主题作为单独的文件夹保存在 git 子模块中,然后对 jekyll 的关键元素进行符号链接。这不会在gh-pages粗略示例
blog
|
+-- theme_1/
|
+-- theme_2/
| |
| +-- _layouts/
|
+-- _layouts ln - theme_2/_layouts
Run Code Online (Sandbox Code Playgroud)
这样,当更改主题时,主题就不会发生冲突。