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.
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.
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.
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.
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.
Auf https://metacpan.org/source/GUIDO/Qgoda-v0.9.2/Changes gibt es eine vollständige Liste der Änderungen einsehen.
Die Pläne für die nächsten Wochen sind:
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.Parallel dazu wird natürlich an der weiteren Vervollständigung der Dokumentation und einer größeren Testabdeckung gearbeitet. Stay tuned!