После некоторых исследований, пришел к выводу, что Jekyll и его темы, хоть и выглядят доступными, однако не так часто обновляются и требуют установки разных зависимостей (например Ruby) на систему, в которой будет писаться блог, для отладки стиля и прочего. Из последних проблем - давно не обновляемые зависимости для работы с SCSS, которые при запуске выдают много разных Warning, из-за функций, который скоро будут deprecated.

Из требований к системе было:

  • Поддержка GitHub Pages
  • Поддержка Markdown
  • Простая конфигурация
  • Разные модули для поддержи shortcodes (например для GitHub Gist)
  • Легкая миграция существующего блога на новую платформу
  • Поддержка разных социальных кнопок
  • Поддержка RSS

Ко всему этому внезапно подошел Hugo, как говорится в описании “Самый быстрый фреймворк для построения веб-сайтов”, из положительных моментов:

  • Экстремально быстрая сборка страниц (< 1ms)
  • Кроссплатформенность
  • “Живая” перезагрузка страниц

Миграция существующего блога

Без долгих слов, давайте приступим к делу:

brew install hugo # установка для MacOS
hugo new site quickstart # создаем новый каталог quickstart с начальными файлами внутри
cd quickstart
git init # инициализируем git
git submodule add https://github.com/adityatelange/hugo-PaperMod.git themes/PaperMod # добавляем субмодуль git для темы
echo 'theme: "PaperMod"' >> config.yaml # добавляем тему в конфиг (о нем чуть позже)
hugo server # запускаем сервер

Копируем записи со старого блога:

mkdir -p content/posts
cp -R ../g3rhard.github.io/_posts/* ../quickstart/content/posts

Проверяем, что блог работает, открыв страницу http://localhost:1313

Дополнительные улучшения

Вероятно, не все работает, как ожидается, поэтому по документации к теме добавляем и другие параметры:

baseURL: "https://g3rhard.github.io/"
languageCode: "en-us"
title: "G3rhard"
paginate: 5
theme: "PaperMod"
rssLimit: 10

googleAnalytics: "UA-125136651-1"

minify:
  disableXML: true
  minifyOutput: true

outputs:
  home:
    - HTML
    - RSS
    - JSON

params:
  env: production # to enable google analytics, opengraph, twitter-cards and schema.
  title: G3rhard blog
  description: "System Engineer from Gdansk"
  keywords: [Blog, Portfolio, PaperMod]
  author: Me
  # author: ["Me", "You"] # multiple authors
  # images: ["<link or path of image for opengraph, twitter-cards>"]
  DateFormat: "January 2, 2006"
  defaultTheme: auto # dark, light
  disableThemeToggle: false

  ShowReadingTime: true
  ShowShareButtons: true
  ShowPostNavLinks: true
  ShowBreadCrumbs: true
  ShowCodeCopyButtons: false
  ShowWordCount: true
  ShowRssButtonInSectionTermList: true
  UseHugoToc: true
  disableSpecial1stPost: false
  disableScrollToTop: false
  comments: false
  hidemeta: false
  hideSummary: false
  showtoc: true
  tocopen: false

  homeInfoParams:
    Title: "Hi there \U0001F44B"
    Content: Welcome to my blog

  socialIcons:
    - name: github
      url: "https://github.com/g3rhard"
    - name: buymeacoffee
      url: "https://buymeacoffee.com/g3rhard"
    - name: linkedin
      url: "https://linkedin.com/g3rhard"
    - name: Rss
      url: "index.xml"

markup:
  highlight:
    noClasses: false
    # anchorLineNos: true
    # codeFences: true
    # guessSyntax: true
    # lineNos: true
    # style: monokai

Копируем файлы favicon в каталог static и добавляем конфигурацию в config.yml:

❯ tree static
static
└── img
   ├── apple-touch-icon.png
   ├── favicon-16x16.png
   ├── favicon-32x32.png
   ├── favicon.ico
   └── safari-pinned-tab.svg
params:
  assets:
    favicon: "/img/favicon.ico"
    favicon16x16: "/img/favicon-16x16.png"
    favicon32x32: "/img/favicon-32x32.png"
    apple_touch_icon: "/img/apple-touch-icon.png"
    safari_pinned_tab: "/img/safari-pinned-tab.svg"

И последний штрих - добавляем .gitignore:

# Generated files by hugo
/public/
/resources/_gen/
/assets/jsconfig.json
hugo_stats.json

# Executable may be added to repository
hugo.exe
hugo.darwin
hugo.linux

# Temporary lock file while building
/.hugo_build.lock

That’s all.

  1. Hugo
  2. github - adityatelange/hugo-PaperMod
  3. Favicon Generator
  4. favicon.io