Qgoda Version 0.9.3 veröffentlicht

  1. November 2018 - Guido Flohr

Qgoda version 0.9.3 steht ab sofort zum Download zur Verfügung, entweder als normales Perl-Paket, als Docker-Container oder von github. Es handelt sich größtenteils um ein Konsolidierungs-Release, bringt aber auch einige wichtige Veränderungen.

Neue Namen für Konfigurationsvariablen

Die aus Benutzersicht wichtigsten Änderungen wurden an der Konfiguration vorgenommen. Alle Unterstriche (_) in Variablennamend wurden durch Bindestricht (-) ersetzt. So wurde zum Beispiel aus exclude_watch jetzt exclude-watch.

Validierung der Konfiguration mit JSON-Schema

Die Konfigurationsdatei _config.yaml wird jetzt gegen ein JSON-Schema validiert, um ungültige Konfigurationen zu vermeiden. Anderseits sind die Konfigurationsmöglichkeiten aber auch flexibler geworden, weil Qgoda die Konfiguration in vielen Fällen automatisch entsprechend dem Schema repariert. Beispielsweise müssen die Werte der Konfigurationsvariablen helpers eigentlich Listen sein, aber sie lassen sich auch so angeben:

helpers:
  build: gulp

Die Zeichenkette gulp wird aber automatisch in eine Liste befördert:

helpers:
    build:
      - gulp

Dahinter steckt ein allgemeines Muster, das sich immer verwenden lässt, wenn eine Liste erwartet wird, diese Liste aber lediglich einen Wert hat. Das ist zum Beispiel auch für defaults der Fall:

defaults:
    - files: /en
      values:
        lingua: en
    - files:
        - /de
      values:
        lingua: de

Die beiden Versionen für de und en sind äquivalent, und das Ergebnis lässt sich jederzeit mit qgoda config überprüfen.

Das zugrundeliegence JSON-Schema lässt sich übrigens mit dem neuen Kommando qgoda schema untersuchen.

Eingebettete JavaScript-Engine

Die Schema-Validierung geschieht mit Hilfe von Ajv, der gleichen Bibliothek, die zum Beispiel auch webpack verwendet. Allerdings ist Ajv in JavaSCript geschrieben, und es gibt keine gleichwertige Implementierung in Perl.

Um Ajv dennoch verwenden zu können, wurde die Duktape-Engine via JavaScript::Duktape::XS in Qgoda eingebettet. Diese lässt sich sogar mit dem neuen Kommando qgoda javascript oder seinem Alias qgoda js direkt ansprechen. Wer neugierig ist, erfährt mit qgoda javascript --help mehr.

Gerüstbau mit Yeoman

Weiterhin wurde die Arbeit an einem Yeoman-Generator für Qgoda aufgenommen, siehe https://www.npmjs.com/package/generator-qgoda für eine Anleitung.

Zur Zeit lässt sich eine einfache Site mit Entwicklungs-Web-Server erzeugen. Das ist natürlich noch nicht allzu viel, jedoch schon ausreichend, um eine gut strukturierte Qgoda-Site aufzubauen.

Weitere Neuerungen

Auf https://metacpan.org/source/GUIDO/Qgoda-v0.9.2/Changes gibt es eine vollständige Liste der Änderungen einsehen.

Wie geht's weiter?

Die Pläne für die nächsten Wochen sind:

  • Weiterentwicklung des Yeoman-Generators.
  • Ersezung des Plug-In-Interfaces von HTMLFilter durch ein neues API, das auf Cheerio aufbaut. Dadurch können Filter sowohl in JavaScript als auch in Perl geschrieben werden und zwar mit der von jQuery bekannten Syntax.
  • Hoedown wird der neue Standard-Prozessor für Markdown.

Parallel dazu wird natürlich an der weiteren Vervollständigung der Dokumentation und einer größeren Testabdeckung gearbeitet. Stay tuned!