Migration Jekyll -> Nikola

Die Migration von Jekyll auf Nikola ist viel aufwändiger als erwartet. Da Nikola Plugin 'import_jekyll' migriert leider NUR die posts. Der überwiegende Teil wie pages, images und files muss manuell kopiert werden.

Ausführliche Beschreibung:

Es gibt ein Plugin in Nikola, um Texte vom Jekyll zu übernehmen. Damit ist aber bei weitem nicht die ganze Website umgezogen. Dazu bedarf es etlicher manueller Schritte.

Erstes Problem trat bei mir schon auf als ich einfach mal gesagt habe 'nikola import ...'. Es wurden die 'Posts' aus Jekyll gelesen, aber bei der Generierung war dann erst mal gar nichts mehr von den Posts zu sehen.

Was lief falsch? Ich hatte die Dateien in Jekyll mit der Endung .markdown versehen bzw. Jekyll hat das für mich getan. Für diese Endung ist in Nkola aber keine Verarbeitungsregel hinterlegt. Hat länmger gedauert bis ich mir das Configfile von Nikola angeschaut habe. Da ist einfach ein Eintrag einzufügen.

Die Konfiguration sieht danach wie folgt aus:

POSTS = (
    ("posts/*.rst", "posts", "post.tmpl"),
    ("posts/*.md", "posts", "post.tmpl"),
    ("posts/*.markdown", "posts", "post.tmpl"),
    ("posts/*.txt", "posts", "post.tmpl"),
    ("posts/*.html", "posts", "post.tmpl"),
)
PAGES = (
    ("pages/*.rst", "pages", "page.tmpl"),
    ("pages/*.md", "pages", "page.tmpl"),
    ("pages/*.markdown", "pages", "page.tmpl"),
    ("pages/*.txt", "pages", "page.tmpl"),
    ("pages/*.html", "pages", "page.tmpl"),
)

und in den 'Compilers fehlt das auch noch, also konfigurieren. Die Passage sieht dann wie folgt aus:

COMPILERS = {
    "rest": ['.rst', '.txt'],
    "markdown": ['.md', '.mdown', '.markdown'],
    "textile": ['.textile'],
    "txt2tags": ['.t2t'],
    "bbcode": ['.bb'],
    "wiki": ['.wiki'],
    "ipynb": ['.ipynb'],
    "html": ['.html', '.htm'],
    # PHP files are rendered the usual way (i.e. with the full templates).
    # The resulting files have .php extensions, making it possible to run
    # them without reconfiguring your server to recognize them.
    "php": ['.php']
}

Damit wird dann schon mal Inhalt generiert, der sah aber nicht so aus wie bei Jekyll. Die Umsetzung von Mardown nach HTML hat nicht kompklett geklappt. Nach einiger Recherche fand ich dann heras, das einige Mardown Extensions erst konfiguriert werden müssen. Die entsprechende Zeile lautet dann:

MARKDOWN_EXTENSIONS = ['markdown.extensions.fenced_code', 'markdown.extensions.codehilite', 'markdown.extensions.extra', 'markdown.extensions.toc', 'markdown.extensions.meta', 'markdown.extensions.tables']

Damit werden die Piosts die migriert wurden dann auch tatsächlich im Webauftritt sichtbar. Bis zu dem Punkt ist natürlich schon reichlich Zeit in die Umstellung geflossen. Ein händischen Kopieren und umbennen von .markdown ind .md wäre eindeutig schneller gewesen. So habe ich gleich noch einiges über das Konfigurationsfile von Nikola gelernt.

Nächstes Problem: Meine Bilder sind nicht in den Artikeln zu sehen. 1. Die Bilder muss man manuell von Jekyll nach Nikola kopieren. 2. Nach dem Generieren landen die Bilder nicht wie bei Jekyll in einem eigenen Verzeichnis, sondern im Hauptverzeichnis. 3a. Also miss man alle Links zu den Bildern in den Posts manuell anpassen, na zumindest teilmanuell. Das Pattern bleibt gleich und die Ersetzen Funktion leistet gute Arbeit. 3b. Es gibt einen einfacheren Weg über das Konfig File von Nikola:

FILES_FOLDERS = {'files': 'files'}

Habe ich durch freundliche Hilfe auf dem IndieWebCamp erfahren. Da hatte ich die Arbeit natürlich schon gemacht. Aber jetzt ist die Struktur für die Posts endlich so, wie ich sie in Jekyll hatte.

Jetzt fehelen nur noch meine 'Seiten' die sich nciht weiter ändern wie z.B. das Impressum. Wird wieder Manuell nach Nikola kopiert und funktioniert dann anch den obigen Vorbereitungen tatsächlich sofort.

Das Theme aus Jekyll wird natürlich nicht üernommen, da muss man sich verständlicher weise ein ganz neues machen, da Nikola andere Templating Engines verwendet. Damit sind dann erst mal meine ganzen InideWeb Erweiterungen mit den microformats weg und ich arbeite mich in die Templates af Basis von Jinja2 ein.

Dafür das ich eigentlich nur eine kleine handvoll Piosts hatee war das ziemlich viel spannende Erfahrung die ich da gesammelt habe ;)

Wie häufig in der EDV man dnekt man nimmt die Abkürzung und ist dabei auf dem Umweg gelandet ;)

Jetzt ist alles umgesetzt und ich arbeite fröhlich mit Nikola und bin damit für meine Bedürfnisse besser dran als mit Jekyll.