Переезд блога на движок Hugo

или приколюхи сайта RAVRLab

На картинке — я и мой компик в процессе переноса сайта с Notion на Hugo.

[1] Выбор нового движка

Драма с уходом Notion

В начале славных дел статьи в этом блоге выходили на Notion, но:

Поэтому вопрос переезда блога созревал уже давно.

💡

Notion — это note-taking app с возможностью публикации сайта из своих заметок. Сделан максимально удобным для обычного пользователя: большие кнопки, drag’n’drop, публикация сайта делается в 1 клик и т.п.

Выбор движка

Раньше я уже работал с популярными CMS-системами (Wordpress, Joomla и т.п.), но работать в них мне не нравилось:

Затем был обнаружена такая вещь, как генераторы статических сайтов. Грубо, «статический сайт» означает «простой сайт с текстом и картинками» (чего для личного блога вполне достаточно). Hugo — просто самый популярный из таких генераторов.

У Hugo (как и других у генераторов статических сайтов) есть ярко-выраженные особенности:

  1. Весь сайт хранится у пользователя на диске полностью оффлайн (ну или в git)
  2. Полный прямой доступ к структуре и стилю сайта, большой простор для кастомизации
  3. Основной минус: очень высокий порог входа по сравнению с Notion

С уходом Notion стало ясно, что лучше уж потратить силы на то, чтобы разобраться с Hugo, чем делать сайт на движках, которые могут отъехать в любой момент со всем твоим содержимым 😑

💡

Hugo — генератор статических сайтов с открытым кодом.

Сайт хранится в исходниках (в виде Markdown файлов) и собирается вдоль создаваемых пользователем шаблонов (написанных на Go и HTML).

[2] Дизайнерские решения сайта RAVRLab

У Hugo есть много предустановленных тем. Я так и не смог найти ту, которая бы мне подошла, поэтому я просто выбрал пустую тему (hugo-starter-theme) и начал на её базе делать свою, одновременно разбираясь как работает движок.

Тема Hugo назначает сайту не только внешний вид (стиль CSS), но ещё и его структуру (каталоги, подкаталоги, категории страниц и т.п.).

Ниже описываю мелочи, которые не заметны на первый взгляд, но в настройку которых я конкретно упоролся. Изначально, все эти штуки на любом сайте воспринимаются как должное, но т.к. тема настраивалась с нуля — всё это приходилось прописывать руками.

Так выглядел сайт в самом начале (с пустой темой)

Так выглядел сайт в самом начале (с пустой темой)

Списки и отступы

Я в шоке от того, на каком количестве сайтов значок «•» пункта располагается не пойми где относительно текста. Поэтому у себя здесь выставил всё ровно, насколько смог (моноширинный шрифт тоже с этим помогает):

Явно обозначенные заголовки

Каждый заголовок сопровождается значком параграфа «§», чтобы было явно видно, какого уровня это заголовок.

Заголовки

Заголовки

Оформление изображений

Некликабельная картинка

Некликабельная картинка

Цитаты

Цитата

Вложенная цитата отрисовывается на более тёмном фоне, чем «внешняя» цитата

Если картинка вложена в цитату,<br>то её рамка будет более тёмной,<br>чем рамка цитаты

Если картинка вложена в цитату,
то её рамка будет более тёмной,
чем рамка цитаты

Вложенные сворачивания

Граница сворачиваний (в т.ч. внутри других сворачиваний) явно обозначена визуально.

Сворачивание

Скобка слева явно очерчивает границу сворачивания

Вложенное сворачивание 1

Вложенное сворачивание явно визуально выделено

Вложенное сворачивание 2

Привет

Привет

Callout-элементы

Стиль т.н. Callout-элемента (другие названия: alert box, notification box) полностью угнан из Notion:

💡

Лампочка (callout для всякого)

🔗

Callout для ссылок

[3] Функционал

Помимо описанных выше стилей, для полноценной работы сайта надо было руками прикрутить следующие фишечки.

База

Прогерство

Выделение кода x=3 внутри текста.

Таблицы Таблицы
Таблицы Таблицы
Таблицы Таблицы

1
2
3
4
# Многострочный код

bober = 2
kurva = 1

Рендер математических формул (KaTeX): $ \frac{1+\sin x}{1-\cos x} = \frac{2\sin^2\frac{x}{2}}{2\cos^2\frac{x}{2}} = \tan^2\frac{x}{2} $

Навигация

Из своих фишечек, которые я не встречал на других сайтах — сделал так, чтобы структура раздела Справочная просматривалась в виде дерева страниц.

[4] Техническая сторона работы в Hugo

Внутренняя механика работы Hugo примерно такая:

Вживую написание статьи выглядит так:

Так выглядит написание статьи в Hugo

Так выглядит написание статьи в Hugo

Поскольку все шаблоны я настраивал с нуля, то вышла довольно объёмная система, описание которой было сделано в виде MindMap:

MindMap структуры сайта RAVRlab в Hugo

MindMap структуры сайта RAVRlab в Hugo

[5] Общие впечатления от работы в Hugo

С одной стороны, мой вход в Hugo был очень долгим, т.к.:

С другой стороны, полученный полный контроль над сайтом для меня сейчас полностью оправдывает сложности с долгим входом:

Notion RIP.