Релиз третьей версии генератора статических сайтов Jekyll прошел 27 октября 2015 года. А 1 февраля 2016 года GitHub Pages официально поддерживают Jekyll 3. В тот момент я захотел перевести блог на новую версию и прикрутить к нему Gulp.
В тот момент я много работал. А освободился только пару дней назад и решил таки обновить у себя Jekyll. Что из этого вышло и стоит ли обновляться я расскажу в этой статье.
Как обновиться описано на официальном сайте, при обновлении я руководствовался статьей «Upgrading from 2.x to 3.x» и немножно Stack Overflow.
С первого февраля GitHub Pages поддерживает Jekyll 3. Для markdown движка теперь используется только kramdown, а для подстветки синтаксиса — rouge. Я этому рад, поскольку стандартных возможностей Jekyll markdown мне не хватало, а подстветка синтаксиса rouge короче при написании статей.
Для сравнения если раньше, чтобы подстветить кусочек руби кода мы писали:
{% highlight ruby %} (z ||= []) << 'test' {% endhighlight %}
теперь это делается так:
```ruby (z ||= []) << 'test' ```
Отдельный ад для меня была сборка проекта. Гитхаб не мог адекватно собрать мой сайт, поэтому приходилось мудрить с командной строкой. Делать папку _src
, билдить сайт в _site
, переносить все файлы в корень папки и отчищать все в корне кроме папки _src
. Я даже своей сборкой удалил половину другого проекта запустив её не в той папке 😀
Но теперь это в прошлом, гитхаб помимо того что понимает и собирает, теперь делает это быстрее.
Баги/особенности
-
Сбились отступы текста в markdown. Вылечилось добавлением строчки
hard_wrap: true
в конфиг:kramdown: input: GFM hard_wrap: true syntax_highlighter: rouge
-
Перестали открываться статьи. Помогло добавление последнего
/
в конфиге:permalink: /:categories/:title/
-
Сломались переменные в шаблонах. Если написать в
post.html
такой код, то раньше вpage.html
у нас был доступ к переменнойis_post
. Сейчас — нету.--- layout: page is_post: true ---
Теперь, чтобы определить, что текущая страница это пост, я пишу
{% if page.categories %}
. -
Если вы используете
jekyll-redirect-from
, то чтобы гитхаб при сборке его использовал укажите это в конфиге:gems: - jekyll-redirect-from
-
Ваша рсс обновится и разошлется подписчикам еще раз. Возможно это связано с изменениями, которые вносил я и не свзязанно с новой версией.
-
По умолчанию при запуске
jekyll serve
иjekyll build
не показываются посты с датой в будущем. Чтобы их увидить — добавьте флаг--future
.
Удачного вам обновления.