Hakyll

В общем, я загорелся идеей переделать свой блог на статическую генерацию. И в связи с этим посмотрел несколько кандидатур: Jekyll, DocPad, Hugo и Hakyll. У каждой из систем свои достоинства и недостатки. Вообще, статические генераторы сайтов — это благодатная тема для обсуждения: вариантов множество и каждый день появляются новые. Если у вас есть опыт работы с какими-то другими вариантами, то милости прошу в комментарии.

Jekyll — практически стандарт де-факто, написанный на Ruby. На этом движке работает GitHub Pages. Но в нем не хватает некоторых очень важных функции, вроде раздельной пагинации для различных типов записей.

Hugo — молодой движок на Go. Работает очень быстро. По заявлению разработчиков, время генерации одной страницы не должно превышать 3-х миллисекунд. Пагинация отсутствует вообще, но Roadmap проекта утверждает, что она скоро должна появиться. Думаю у проекта большое будущее. А пока…

DocPad — очень гибкий вариант, написанный на JavaScript. Для DocPad существует множество плагинов под самые различные нужды. Но в этом генераторе мне не понравилось соглашение по именованию файлов. Например, в 2013-09-10-something.html.md расширение означает, что файл нужно будет преобразовать из markdown в html, как будто нельзя это указать в конфигурации.

И, наконец, Hakyll. Это скорее не отдельное приложение, а библиотека для создания статических генераторов. Его конфигурация представляет собой программу на языке Haskell, а потому бинарник должен пересобираться после каждого изменения. Зато такой способ даёт подлинную гибкость. Даже если какой-то возможности и не хватает, ничего не мешает её дописать. Да-да, Haskell не может похвастаться огромной популярностью и учить ради какого-то генератора новый непростой язык вряд ли кому захочется. Но так уж получилось, что у меня есть базовые знания, поэтому я решил попробовать и пока не разочаровался.

Надеюсь, пройдет совсем немного времени и мы увидим обновлённый блог, работающий ещё быстрее. Наблюдать за процессом можно на GitHub.