Pug v3.0.0 Release Notes

Release Date: 2020-05-25 // almost 4 years ago
  • ๐Ÿ’ฅ Breaking Changes

    ๐Ÿ”Œ read plugins must now return Buffer if you want to support filters that use renderBuffer (#3213)

    ๐Ÿ”Œ If you don't wish to support this advanced use case, you can continue returning string. If you did not provide a read 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.jsexports.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 stringrenderBuffer: 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.puginclude: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