Hugo - генератор статических сайтов
Fri, Dec 25, 2015Динамические сайты позволяют очень много. Часто слишком много. Иногда слишком много ненужного и неиспользуемого. И за все неиспользуемые функции надо платить увеличением времени отклика, машинным временем, лишним электричеством, перегревом процессоров и, как следствие, глобальным потеплением. Позаботьтесь о природе - не используйте динамические сайты без необходимости.
Лозунги озвучены. Они прекрасны, но не писать же вручную ради спасения лишнего дерева сотни html-ок. Конечно, нет. Для генерации html уже придумано множество инструментов. Берем готовое и используем.
Один из самых популярных в последнее время инструментов - Hugo
Принцип его работы очень прост. Создается некий шаблон сайта со своим дизайном, сеткой, стилями, js.
Наполнение сайта пишется в любом текстовом редакторе в markdown-формате.
Затем запускается Hugo, который собирает из шаблона и текстовых статей готовые html-ки и сохраняет их в подпапке public
.
После чего, остается только залить получившийся статический сайт на сервер.
В качестве бонуса Hugo умеет локально запускать web-сервер с черновой версией сайта. Достаточно в папке проекта сайта набрать:
hugo server -w
Теперь, набрав в браузере http://localhost:1313
, можно видеть внесенные локально изменения. Флажок -w
указывает на то, что при изменении каких-либо файлов,
сайт будет автоматически перегенерирован и перегружен в браузере.
Переписывать справку нет большого смысла, но хочется остановиться на нескольких моментах, которые меня при первом знакомстве c Hugo поставили в тупик.
Во-первых, у текущей версии Hugo нет шаблона по умолчанию. Т.е. чтобы генерация сайта заработала нужно обязательно скачать какой-либо готовый шаблон и прописать его в файле конфигурации. Мне понравилась тема Hyde. Скачиваем её.
mkdir themes
git clone https://github.com/spf13/hyde themes/hyde
В файле config.yaml прописываем:
theme: "hyde"
params:
themeColor: "theme-base-08"
Во-вторых, список параметров в файле конфигурации сильно зависит от используемого шаблона. Есть реальные шансы, что задав в конфигурации список пунктов меню, для каких-то шаблонов мы ничего не увидим. Просто потому, что данные шаблоны вообще не предусматривают отображение меню. Читаем внимательно справку не только по самому Hugo, но и по каждому используемому шаблону. Там может найтись много интересного.
В-третьих, сервер Hugo по умолчанию генерирует сайт в памяти. Учитывая перегенерацию сайта “на лету”, это очень полезная функция. Беда в том, что в текущей версии она работает не везде и не всегда. “Чинится” принудительным отключением при запуске сервера.
hugo server --renderToDisk
В целом, уже сейчас Hugo - удобный и функциональный инструмент для создания статических сайтов. А учитывая, что он активно развивается не только силами автора, но и уже достаточно многочисленным сообществом, можно прогнозировать ему достаточно счастливое будущее. А мы всё-таки спасем с его помощью несколько деревьев.