Недавно прочитал статью про фронтенд без javascript’a и решил, что пора переделать бложик на старый манер: только html, только css. А раз начну переделывать, то заодно можно съехать с jekyll.
TL;DR: страница блога похудела в 3 раза: было 237 килобайт, стало 83. Можно порезать гуглоаналитику и станет ещё в 2 раза легче.
Причины большого веса страниц.
- Грузил никому ненужную аватарку прямиком с гитхаба.
- Подключал highlight js, хотя это можно делать на этапе сборки странички.
- Использовал стороннюю тему и там было много всего, хотя сейчас есть flex и CSS grid, поэтому можно половину выкинуть.
Причины миграции на hugo вместо jekyll.
Плюсы:
- Hugo использует бонус golang в виде компиляции в один бинарник, и не надо мучаться с настройкой rvm-ruby-bundler-jekyll.
- Hugo умеет импортировать jekyll репозиторий:
hugo import jekyll /path/to/src
. - Hugo получил поддержку общества, поэтому уже есть и темы, и всякие ништячки локализации.
- В hugo много настроек и собирает css/js самостоятельно без помощи внешних утилит.
Минусы:
- Go templates - это худший шаблонизатор в мире. Уверен, что кто пользовались jinja2 сразу поймут боль.
- Слишком много настроек из-за чего иногда сложно найти, как сделать что-то простое.
Подводные камни при переезде.
- Если вы используете Github User Page, а не Github Project Page, то вам не повезло и папку docs/ в репозитории вы использовать не можете. Вместо этого придеться в репозиторий
.github.io класть сразу сгенерированную статику. То есть, необходимо создать ещё один репозиторий, где будет hugo, а предыдущий подключить в качестве сабмодуля гита. - Если вы мигрируете с jekyll, то не забудьте удалить предыдущий config.yaml из репозитория, иначе gihub будет считать, что это jekyll репозиторий и попробует его собрать.
- По-умолчанию, jekyll использует название файла в качестве пути, а hugo повторяет иерархию папок. Для того, чтобы повторить поведение, можно в config.yaml прописать опцию permalinks, или же в каждом файле использовать опцию alias.
Доделки-доделочки.
- Надо отказаться от google analytics, так как это от лукавого. Сначала думал сделать свой пиксель, а сейчас думаю зачем мне трекать кто читает?
- Добавить переключалку на ночную тему. Задача со звёздочкой сделать это без js :)