Jekyll

Ahogy ígértem írok pár szót arról, hogy mi is az a Jekyll és mire jó.

Röviden a Jekyll egy ruby gem amellyel statikus oldalakat generálhatunk. Egy oldal összeállításához a jekyll-len kívűl pár könyvtár és file kell csak, amelyekből legenerálja az egész oldalt. Akinek esetleg van GitHub oldala azok már találkozhattak vele, hiszen ott is lehetőség van a használatára.

A jekyll a Liquid nevű ruby template enginet használja. Nem kell túl bonyolult dologra gondolni, aki már látott template enginet, el fog vele boldogúlni.

Lehetőségünk van különböző leíró nyelvek haszálatára: HTML, markdown, textile. Én a makdownt választottam. A jekyll a fileok kiterjesztéséből tudja, hogy milyen feldolgozón kell átengednie.

Telepítés

apt-get install ruby1.8-dev rubygems1.8
gem install jekyll

Nincs sok függősége: directory_watcher, liquid, open4, maruku, classifier.

Könyvtárszerkezet

_includes
_layouts
    default.html
    post.html
_plugins
_posts
    2012-01-14-pelda-post.markdown
_site
_config.yml
index.html
  • a \_congig.yml tartalmazza a beállításokat.
  • az index.html lesz a főoldalunk.
  • az \_inludes olyan templateeket tartalmaz, amiket más templateekben használhatunk az {% include file.ext %} taggel.
  • a \_layouts mappa tartalmazza azokat a templateket, amelyeket az oldal összeállításához használhatunk.
  • a jekyll bővíthető pluginekkel, ezeket a \_plugin mappába kell tenni
  • a \_posts tartalmazza a bejegyzéseinket. Látható, hogy a file nevében van a publikálás dátuma, és a slug amelyen keresztűl majd elérhető a bejegyzés.
  • a \_site könyvtárban lesz a legenerált oldal. Konfigban megadható más cél is.

YAML Front Matter

Minden file, amely elején ott van egy YAML formátumú konfigurációs rész, átfut a jekyllen.

Ez például így nézhet ki:

---
layout: post
title: Példa post
---

Ez annyit tesz, hogy ez a bejegyzés a post layout-ot fogja használni és a title Példa post lesz.

A jekyll minden egyéb filet érintetlenül átmásol a célként megadott könyvtárba.

Elérhető változók

A templateekben az alábbi változók érhetőek el: Template data

A site változóban elérhetőek a _config.yml-ben beállított értékek is.

A post-ban pedig azok, amiket a postok elején lévő YAML-ban megadunk. Én például minden posthoz megadok egy excerpt változót, amely egy pár szavas rövid leírást ad az adott bejegyzésről és ezt az index.html-ben a post címe után kiírom.

Használat

A gyökérben egy egyszerű

jekyll

parancsal inditható is a generálás. Ez kiüríti a cél könyvtárat, majd a legenerált tartalommal feltölti.

A jekyll futtatható szerverként is:

jekyll --server --auto

Ilyen esetben a 4000-es porton elérhető a legenerált oldal. Az auto flaggel a jekyll figyeli a filokon történt változásokat, és ilyen esetben újra generálja az oldalt. A dokumentációban konrétan nem láttam - legalábbis nem rémlik -, de nem hiszem, hogy ez a beépített server éles környezetben való használatra lenne, inkább teszt célokat szolgál.

Nálam (Ubuntu 11.10, VBox-ban) egyébként az auto nem is működik, mert a directory_watcher gemmel valami nem ok és emiatt be se tudja tölteni. Van rá megoldás (a gemmet localban újra kell fordítani) de annyira nem éreztem hiányát, hogy foglalkozzak vele.

Migrálás

Lehetőség van a már meglévő wp, drupal, de akár tumblr, vagy posterous oldalunkat is jekyllre migrálni.

Konklúzió

Amint látható nem egy bonyolult dologról van szó. Amikor kitaláltam, hogy újra élesztem kicsit az oldalam, pont ilyen megoldásra gondoltam. Nincs szükségem CMS-re, összetett admin felületekre. Az már csak hab a tortán, hogy az egész verziókezelhető is.

Forrás

Az egész oldal forrása megtalálható GitHubon.