Programio

Hexo.io: skutečný next-gen blogovací systém

Uječené třináctky posílají animované gify na Tumblr, salónní intelektuálové blogují na Respektu, SEO guru českého webu používá nejhorší blogovací systém na světě blogger.com a opravdoví programátoři neblogují, ale od rána do večera kompilují linuxové jádro. Zůstává otázka: jaký blogovací systém bych měl použít pro takové to domácí blogování o programátorských záležitostech?

Popis a Instalace

Představím vám skvělý nástroj, který jsem nedávno objevil, a to Hexo.io. Hexo je generátor statických stránek. Ano, opravdu – statických stránek. Žádná databáze, žádné PHP, jen čisté HTML. Zkrátka je to so 1999! Jak Hexo funguje?

Začneme instalací. Hexo.io je napsaný v Node.JS, pokud ho nemáte nainstalovaný, učiňte tak. (brew install nodejs…)

Spolu s Node.JS máte k dispozici balíčkovací systém npm. Pokud ho neznáte, tak si o něm možná něco v rychlosti přečtěte, ať tušíte, co to zhruba dělá. My použijeme npm k nainstalování Hexo.io:

1
npm install hexo -g

A to je vše, Hexo.io je úspěšně nainstalované. V terminálu pak běžte do složky, ve které chcete založit nový blog a napište:

1
hexo init nazev-blogu
cd nazev-blogu
npm install
hexo server

Pokud vám program odpoví nějak takto, je vše v pořádku:

1
[info] Hexo is running at http://localhost:4000/. Press Ctrl+C to stop.

Přejděte v prohlížeči na adresu http://localhost:4000/ a uvidíte svůj nový blog. Veškeré nastavení se nachází v souboru /_config.yml, projděte si ho a nastavte si, co jak chcete. Hlavně si tam nastavte URL, na které bude blog běžet a pak název blogu, popisek apod. Já jsem si tam přenastavil permalinky na

1
permalink: :title/

což znamená, že URL všech článků se budou generovat pouze z titulku, nebude se tam vkládat datum.

Veškeré další terminálové příkazy, které zde budou uvedeny, předpokládají, že se je spouštíte ze složky, ve které je nainstalovaný váš blog.

Vytváření a editace článků

Napište v terminálu:

1
hexo new "Název článku"

Tento příkaz vytvoří ve složce /source/_posts/ soubor Nazev-clanku.md. Ten normálně editujte a napište si do něj co chcete s využitím Markdown syntaxe. Po každém uložení se celý blog přegeneruje, což si můžete zkontrolovat v prohlížeči na adrese http://localhost:4000/Nazev-clanku/. Příkaz hexo new ... ani nemusíte používat, stačí zkrátka vytvořit ve složce /source/_posts/ nějaký soubor.md a to je celé. Systém ho automaticky rozpozná a přidá do výpisu článků. Základní struktura článku, kterou byste měli dodržet, vypadá takto:

1
title: "Hexo.io: blogovací systém pro 21. století"
tags:
- hexo
---

Uječené třináctky posílají animované gify na Tumblr...

Celý workflow půjde pravděpodobně nastavit tak, aby se prohlížeč aktualizoval s každou změnou vygenerovaného HTML souboru, ale to už nechám na vás.

Hexo podporuje i rozepsané články, které se nevydají. Pokud chcete takový draft vytvořit, použijte příkaz

1
hexo new draft "Název článku"

nebo vytvořte soubor ve složce /source/_drafts. Pokud nyní budete chtít vidět drafty i ve výpisu článků na svém localhostu, musíte spustit server příkazem hexo server --drafts. Když spustíte server bez --drafts, uvidíte web zase bez draftů (i když možná ještě předtím budete potřebovat hexo clean, který pročistí cache). Když budete chtít draft vydat, napište

1
hexo publish "Název článku"

Hexo přesune článek z /source/_drafts do /source/_posts a přidá informaci o aktuálním čase. Pokud se ale soubor s článkem jmenuje jinak než samotný článek, musíte příkaz publish zavolat právě s názvem souboru. Například tento článek jsem vydal příkazem

1
hexo publish hexoio

protože soubor, ve kterém je uložený článek, se jmenuje hexoio.md. Z názvu souboru se pak generuje URL.

Při každé změně zdrojového souboru se přegeneruje kompletně celý web, například i index.html, kam se přidá odkaz na nový článek atp.

 Generování statických souborů

Samotný běžící server neukládá statické HTML soubory na disk. Pokud je chcete uložit, použijte příkaz

1
hexo generate

To vytvoří složku /public a uloží do ní všechny potřebné soubory pro vykreslení stránky. Můžete si normálně otevřít soubor /public/index.html v prohlížeči a uvidíte svůj blog (možná budou blbnout odkazy, protože Hexo předpokládá, že ty soubory otevřete v rootu na serveru, ne přes file:///). Tyto soubory si pak můžete nahrát někam na své FTP. Ale s tímhle ještě počkejte, v příštím článku si ukážeme, jak řešit deploy (nahrání na web) efektivněji.

Jak měnit vzhled

Máte dvě a půl možností: stáhnout si jinou již existující šablonu nebo si napsat vlastní (nebo upravit nějakou stávající).

Na webu existuje seznam šablon, které můžete pro svůj blog použít. Instalace je jednoduchá: najděte si šablonu, která se vám líbí, třeba tuto. Na té stránce naleznete sekci Install a podle té se řiďte. Typicky překopírujete jeden až dva příkazy do terminálu a pak musíte editovat /_config.yml a vepsat tam, kterou šablonu chcete používat:

1
theme: strict

Šablona se stáhne do složky /themes, pokud ji chcete upravit, tak ji upravte tam.

RSS

Hexo standardně negeneruje RSS. Pokud ho chcete, použijte k tomu plugin hexo-generator-feed:

1
npm install hexo-generator-feed

A do configu přidejte:

1
feed:
  type: rss2
  path: rss.xml 
  limit: 10

A někam přidejte odkaz na /rss.xml. To je celé. Při generování souborů se automaticky vygeneruje i RSS soubor.

Komentáře

Jak dostat do statického blogu komentáře? V minulém století to asi šlo těžko, ale teď už jde díky službám typu disqus snadno. V configu vyplňte položku

1
disqus_shortname: vasnazev

a to je vše.

Pluginy

Hexo nabízí hromadu nějakých plugin a dalších udělátek. Můžete tak třeba jednoduchým příkazem vložit YouTube video nebo Gravarat ikonu.

Výhody použití Hexo.io

Zkusím sepsat pár bodů, díky kterým se mi Hexo.io líbí:

  • Celý blog mám nainstalovaný lokálně, takže články můžu psát na svém počítači, klidně bez internetu a stále uvidím plnou verzi blogu.
  • Na psaní článků můžu použít libovolný oblíbený editor (nesnáším WYSIWYG editory), článek se mi přitom automaticky aktualizuje.
  • Kdyby mi náhodou Hexo přestal vyhovovat, můžu velmi snadno migrovat někam jinam.
  • Nulové nároky na hosting a úžasně jednoduchý způsob nahrání blogu na web. Tento blog ve skutečnosti běží na GitHub Pages, takže nejen, že nepotřebujete PHP/MySQL, nepotřebujete ani to FTP. Deploy je řešen běžným commitem&pushem na GitHub. Jak dostat Hexo blog pohodlně na web vám povykládám v příštím díle.

…ale hlavně jsem chtěl zkusit něco nového – navíc kdo může říct, že bloguje podobně, jako se blogovalo před patnácti lety? Pokud by se vám líbila myšlenka, ale nelíbilo provedení, tak můžete zkusit starý dobrý Jekyll. Hexo mi ale celkově přišlo víc elegantnější a víc propracovanější.

Nevýhody použití Hexo.io

Jsem si jistý, že vás během čtení článků napadlo tak milion nevýhod, takže se sám jejich výčtem ani nebudu zdržovat :-)