Qgoda version 0.9.3 is now available for download either as a regular Perl install, a docker image or from github. It is mostly a consolidation release but also features some important changes.
The most important changes from a user perspective have been made to the
configuration. All underscores ("_") in variable names are now replaced
by hyphens ("-"), for example exclude_watch
has now become
exclude-watch
.
The configuration file _config.yaml
is now validated against a
JSON schema as a safe-guard against invalid
configurations. On the other hand, the configuration is now more flexible
because you can often simplify the configuration and Qgoda will "repair"
it for you. For example the values of the Qgoda helpers
are actually
arrays but you can still write this:
helpers:
build: gulp
The string "gulp" will now be automatically coerced into an array:
helpers:
build:
- gulp
This is a general pattern. You can use it wherever an array is required, when
you have just one value. The same goes for defaults
:
defaults:
- files: /en
values:
lingua: en
- files:
- /de
values:
lingua: de
The two versions for "en" and "de" are equivalent. You can always check your
results with qgoda config
.
By the way, you can inspect the JSON schema with the new command qgoda
schema
.
The JSON schema validation is done with Ajv, the same library that for example webpack is using. But Ajv is written in JavaScript and there is no alternative implementation in Perl available.
In order to use it, the Duktape JavaScript engine
was embedded into Qgoda via
JavaScript::Duktape::XS.
You can even access this engine with the new command qgoda javascript
or its alias qgoda js
. Try qgoda javascript --help
if you are curious.
Work has started on a Yeoman generator for Qgoda. See https://www.npmjs.com/package/generator-qgoda for instructions.
You can currently generate a basic site with development web server. Not that much but already enough to generate a site with a sane structure.
See https://metacpan.org/source/GUIDO/Qgoda-v0.9.2/Changes for a complete list of changes.
The plans for the next week are:
HTMLFilter
plug-in interface with a new API based on
cheerio. You can then write your own filters
in JavaScript or Perl but with the familiar
jQuery syntax.Apart from that the continuous goals are the completion of the documentation on this site and better test coverage. Stay tuned!