pug@3.0.0
Breaking Changes
-
read
plugins must now returnBuffer
if you want to support filters that userenderBuffer
(#3213)If you don't wish to support this advanced use case, you can continue returning
string
. If you did not provide aread
plugin, you do not need to do anything. -
The
minify
option on filters now requires you to install the relevant jstransformer (#3084)Currently we support:
- jstransformer-uglify-js for JavaScript
- jstransformer-clean-css for CSS
-
Drop support for node 6 and 8 (#3243)
New Features
-
Support filters that apply to Buffers (#3213)
e.g.
// options.js exports.filters = { png: { // instead of a function, specify an object with a "renderBuffer" property // whose value is a function that takes a Buffer instead of a string renderBuffer: function(buffer, options) { var data = Buffer.from(buffer).toString('base64'); return '<img src="data:image/png;base64, ' + data + '"/>'; } } };
You can then use the filter like:
// foo.pug include:png my-small-image.png
-
Add support for replacing code gen via a plugin with
generateCode
(#3230) -
Support
each ... of ...
loops (#3179)each value of iterable li= value
This requires an environment that supports the
for (const val of iterable)
syntax in JS. You can iterate over Maps, Sets etc. as well as arrays. There is also some destructuring of map keys:- const map = new Map([['a', 'x'], ['b', 'y']]); each [key, value] of map li strong= key = value