Skip to content

Latest commit

Β 

History

History
850 lines (716 loc) Β· 30.7 KB

CHANGELOG.md

File metadata and controls

850 lines (716 loc) Β· 30.7 KB

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

0.22.0 - 2021-06-04

Added

  • New plugin base_path to search and fix automatically all urls in the HTML by adding the path prefix of the location setting. This reduce the need to use the url filter everywhere.
  • The search.pages() helper allows multiple values to sort.

Changed

  • BREAKING: The url variable of the pages must start with /, ./ or ../.
  • Uncoupled the loaders. Now they only need the path argument.
  • The preprocessors check the extension of the input and output file (previously only output extension was used).

Fixed

  • The url filter shouldn't add the path prefix if it's already added.
  • search.pages() must return only HTML pages (previously it also returned assets).
  • Windows installation. #98

0.21.1 - 2021-06-03

Fixed

  • Restored import_map.json to not break upgrades from older versions.

0.21.0 - 2021-06-01

Added

  • The postcss and terser filters. #97
  • The --plugins argument to lume init, so you can load and use plugins. Example: lume init --plugins=postcss,terser,pug.
  • The property document to Page that returns the parsed HTML.
  • New plugin code_highlight to automatically highlight all code inside pre code. Previously, it was part of the Markdown plugin. Now it’s uncoupled, so it can be used by any template engine.
  • The extensions and attribute options to the inline plugin.
  • New argument --dev (or -d) for lume upgrade to upgrade to the latest development version.

Changed

  • Nunjucks no longer loads .html files by default.
  • The loader argument in loadPages and loaddAssets is now optional, and the text loader is used by default.
  • The loaders and template engines are now fully decoupled. This allows to use the variable templateEngine in a layout.
  • BREAKING: Removed automatic code highlighting from the Markdown plugin. Use the new code_highlight plugin.
  • Moved the client code of live reload to a external file ws.js.
  • Live server reloads the entire HTML page after JavaScript changes.

Removed

  • The .markdown extension. Use .md or configure the Markdown plugin to enable it.
  • The function site.engine(). Use the third argument of site.loadPages(). For example: site.loadPages([".html"], textLoader, nunjucksEngine).
  • The plugin dom. It’s no longer needed because pages can easily return the parsed HTML. For example: site.process([".html"], (page) => modify(page.document)).

Fixed

  • Updated std, postcss, deno_dom, date_fns and highlight.js (to 11.x).

0.20.2 - 2021-05-18

Added

  • More default character replacements to slugifier.

Changed

  • Simplified the script runner by using the /bin/bash or PowerShell.exe executable. This adds support for more features, like pipes, etc.

Fixed

  • Updated pug.
  • Resolve the imported files from template engines, like nunjucks, when the src is in a subdirectory.

0.20.1 - 2021-05-15

Added

  • File install.js for easy installation.

Removed

  • The command install from the CLI.

Fixed

  • The Lume version.

0.20.0 - 2021-05-14

Added

  • New properties pretty and slugify for the url page variable to override the corresponding prettyUrls and slugifyUrls site options in particular pages. #95
  • import_map.json to the installation process. This allows to import Lume in the _config.js file with import lume from "lume/mod.js";.
  • New command lume install to install Lume easily using the import map.
  • New script ci.js to execute the CLI in a CI environment (without installing it or defining the import map).
  • New argument --import-map for the lume init command to enable or disable the import map in the _config.js file. By default, it’s enabled.

Changed

  • The minimum Deno version supported to 1.10.0.
  • BREAKING: prettyUrls to not apply to the url page variable if it’s a string. To generate a custom pretty URL: #95
    • use an object (e.g., { path: /about-me })
    • add a trailing slash (e.g., /about-me/)
    • use a full URL (e.g., /about-me/index.html).
  • BREAKING: url values to not assume that the page is HTML. This means the .html extension won’t be added by default. #95
  • lume init to generate a _config.js file using the import map. Use lume init --import-map=false to use the old URLs.

Removed

  • The property ext from the url page variable, because path now includes it. #95
  • The command lume update. It’s not needed thanks to import maps.

Fixed

  • Updated the std dependency.

0.19.0 - 2021-05-10

Added

  • The url page variable supports an object with path and ext properties to fully customize the output filename. #83
  • New plugin relative_urls to convert all URLs to relative. #85
  • Preprocessors (like processors, but are executed before rendering). #91
  • Allowed setting options for the Nunjucks plugin. #90
  • Options to customize the slugifyUrls setting: #94
    • lowercase: to enable/disable lowercase conversion (true by default)
    • alphanumeric: to convert all characters to ASCII (true by default)
    • separator: to customize the separator (- by default)
    • replace: an object to replace some special characters.
  • Option includes to customize the path (or paths) used to resolve the @imported files in the postcss plugin. Use includes: false to disable it.
  • autoprefixer is included by default in the postcss plugin.

Changed

  • The default URL of the paginate helper to relative: ./page-${page}.
  • Improved the slugifier to handle the separator better, for example:
    • 200,000*7 becomes 200-000-7 and not 2000007
    • !2 / 3% becomes 2/3 and not -2-/-3-
    • Who is?.txt becomes who-is.txt and not who-is-.txt.

Removed

  • The deprecated permalink variable in pages. Use url instead.

Fixed

  • Ignored files on server update weren’t detected properly. #88
  • Throw an error when a proper template engine can’t be found. #87
  • Missing doctype after DOM manipulation.
  • The njk filter didn’t work with async filters. #93
  • Fixed support for subextensions (like page.html.md). #83
  • Improved the errors of the inline plugin.
  • Made sure that all characters are lowercased when slugifying (so β€œβ„–β€ becomes no and not No).
  • Relative URL syntax to require the prefix ./ or ../, so URLs like .foo, ..foo or .../foo are interpreted correctly.
  • Changes in _data/*/* files weren’t updated correctly on --serve.
  • Updated the postcss and postcss_import dependencies.

0.18.1 - 2021-04-26

Fixed

  • Creation of Date values. #82
  • Updated the postcss and terser dependencies. #81

0.18.0 - 2021-04-24

Added

  • A second argument for the lume() function to configure the default plugins. #45
  • Support for more file formats on local server. #67

Changed

  • API for the search helper: #69
    • Replaced the operator ~= with *=.
    • Added the <, <=, > and >= operators.
    • Allowed using the OR operator with pipes, like tag1|tag2 or title=value1|value2.
    • Added support for numeric values.
    • Added support for date and datetime values.
  • The date("ATOM") filter uses Z instead of +00:00. #64
  • Removed the hljs class from the blocks of unhighlighted code. #71
  • Datetime values in filenames can omit the seconds, like in 2021-04-24-18-00_post.md.

Fixed

  • User options are overridden by default options in the Markdown plugin.
  • Changed some filenames to align with the Deno style guide. #73
  • Updated dependencies. #63, #70, #72, #76, #79
  • Improved the CLI help output. #77

0.17.1 - 2021-04-14

Added

  • New option -o/--open to open the browser automatically when running lume --serve. #62

Removed

  • The extensions .html.js and .html.ts introduced in 0.17.0. They can be confusing because not all templates must generate HTML pages, so .tmpl.js/.tmpl.ts are more agnostic and fit all cases.

Fixed

  • Updated the postcss version to fix source maps.
  • Updated the postcss_import version to fix the @charset at-rule.

0.17.0 - 2021-04-11

Added

  • The local IP address is shown on lume --serve. #55
  • Allowed an empty front matter. #54
  • The extensions .html.js and .html.ts are processed as pages (in order to replace to .tmpl.js and .tmpl.ts that will be removed in the future).
  • Added ability to change the sort direction in search. #57

Changed

  • Deprecated the permalink page variable. Use url instead. #46
  • Removed the permalink variable in the paginate helper that uses sprintf. Now it accepts only the url option that must be a function.

Fixed

  • Improved the slugifier, including a better support for Unicode. #50, #56
  • Update the MIME types used by the server. #51
  • Updated some dependencies. #59

0.16.6 - 2021-04-04

Added

  • New option slugifyUrls to disable the slugifier introduced in 0.16.0. #44

0.16.5 - 2021-03-29

Fixed

  • Undo the change only rebuild the site if it's needed due to regression issues.

0.16.4 - 2021-03-28

Added

  • Allow to define a function as a permalink to generate it dynamically.
  • The permalink value can have a relative path (must start with ./ or ../) that will be resolved to the directory name.
  • The url filter allows URLs starting with ~ to reference to source files that will be automatically resolved to the final URL.

Fixed

  • When reloading files on lume --serve, some ignored files weren’t correctly filtered.
  • Improved lume --serve to only rebuild the site if it’s needed.
  • Several changes for Windows compatibility.

0.16.3 - 2021-03-21

Fixed

  • The SVG plugin was failed by the SVGO dependency. #43

0.16.2 - 2021-03-20

Added

  • New, experimental plugin image to resize images automatically.

Fixed

  • On merge options, arrays were converted to objects.

0.16.1 - 2021-03-14

Fixed

  • The version number.

0.16.0 - 2021-03-14

Added

  • New page variable renderOrder to control the rendering order of the pages.
  • New CLI alias -s for --serve.

Changed

  • Slugify the paths of all generated pages to replace tildes and other conflictive characters and to convert them to lowercase.
  • Changed the way to generate multiple pages for more flexibility.

Fixed

  • Ensure autogenerated pages aren’t saved if they don’t change (on --serve).

0.15.4 - 2021-03-08

Added

  • The date plugin accepts strings or integer arguments (they will be converted to a Date with the new Date(value) constructor).

Fixed

  • Updated dependencies.

0.15.3 - 2021-03-06

Fixed

  • Some issues with paths on Windows. #41

0.15.2 - 2021-02-22

Fixed

  • The version number.

0.15.1 - 2021-02-21

Added

  • Added a second argument for the default exported function of cli.js to set a site directly.

Fixed

  • Pug templates loaded with extends were cached indefinitely. #39
  • Allow relative paths in the --root CLI argument.

0.15.0 - 2021-02-05

Added

  • New advanced search features:
    • You can filter by any field at any level, for example search.pages("header.categories=my-category").
    • You can sort by any field at any level, for example search.pages("header.categories=my-category", "my.custom.order.field").
    • New method search.data() to return the data assigned to any page or directory.

Changed

  • Restore the ability to return the proper exit code on lume --run.
  • Show more info on error.
  • Removed the parameter to ignore tags in search.tags(). Replaced with a filter like the one in search.pages().

Removed

  • The method search.directory() to return a directory instance. Use search.data().
  • The option file to sort the results of search.pages(). Use url instead.

Fixed

  • Cache wasn’t correctly refreshed when using different versions of plugins. #35
  • Updated dependencies.
  • Ensure the processors are executed in the same order they where defined.
  • The inline plugin when the site is located in a subdirectory.

0.14.0 - 2021-02-02

Changed

  • API for the Page class:
    • Tags are stored as an array in page.data.tags (they were previously contained by a Set in page.tags).
    • Removed the page.fullData property. page.data contains the merged data.
  • CLI: #33, #34
    • Switched some options (arguments starting with --) to commands:
      • lume --upgrade to lume upgrade
      • lume --update to lume update
      • lume --init to lume init
      • lume --run=<script> to lume run <script>.
    • Added command-specific help output. For example, lume run --help.
    • Changed the way to specify a different cwd: instead of lume path/to/site, use lume --root=path/to/site.

Fixed

  • Link to the docs in --help. #32

0.13.2 - 2021-01-23

Fixed

  • The incorrect default configuration for YAML plugin.

0.13.1 - 2021-01-23

Fixed

  • PostCSS plugins didn’t process CSS files.

0.13.0 - 2021-01-20

Added

  • Normalize options across some plugins.

Changed

  • The minimum required Deno version to 1.7.0.
  • Temporarily, lume --run doesn’t return the proper exit code until a bug in Deno is resolved.

0.12.1 - 2021-01-16

Added

  • New command lume --update to update the Lume version used by any _config.js file to the same installed globally in CLI.

Fixed

  • The cache in the search helper to return the original array instead a clone, so it can be modified outside.
  • The uncaught exception in the built-in server due to a broken pipe.

0.12.0 - 2021-01-15

Added

  • New filter njk registered by the nunjucks plugin.
  • Moved the url filter to a plugin that also creates an additional filter htmlUrl to search and fix URLs in HTML code.
  • New plugin date to format date and time values using the library date-fns.
  • The sorting parameter of search.pages() accepts any key (in addition to date and file).

Changed

  • Moved attributes and classname to the new attributes plugin that’s enabled by default.

Fixed

  • The url filter with null values.
  • Improved performance of search.pages() by implementing a cache system.
  • Improved performance of merging data and tags by implementing a cache system.

0.11.0 - 2021-01-12

Added

  • New plugin inline.
  • New plugin terser. #29, #30

Changed

  • Renamed the plugin css to postcss and renamed some of its options:
    • map to sourceMap
    • postcssPlugins to plugins.

Fixed

  • Some files (like layouts) were loaded multiple times. Implemented a cache system to ensure that every file is read only once.

0.10.8 - 2021-01-03

Fixed

  • Sometimes, the live reload didn’t reload the page, even if the changes were sent to the browser. #20

0.10.7 - 2021-01-02

Added

  • Support for async filters. #22
  • The events beforeUpdate and afterUpdate got a property files with the names of all changed files.
  • Allow configuring the CSS plugin with the following options:
    • postcssPlugins: an array of the PostCSS plugins #26
    • map: set true to generate source maps.
  • Ability to dynamically add or remove pages from processors.

Fixed

  • WebSocket sent update messages twice.
  • The paginate helper didn’t always return the latest page.
  • Dispatching events that contain scripts should return false if the script fails.

0.10.6 - 2020-12-27

Fixed

  • The multipage generation workflow.
  • The random WebSocket errors on reloading changes.

0.10.5 - 2020-12-25

Fixed

  • The --location option being unknown.

0.10.4 - 2020-12-24

Fixed

  • Ensure that page tags are always converted to strings.
  • The template cache wasn’t always updated.

0.10.3 - 2020-12-21

Fixed

  • The TypeError on reloading the server.
  • Removed extra whitespace when parsing the front matter.
  • Improved the Pug plugin.
  • The TypeScript errors due to conflicts with Eta. #18
  • Added cache for the compiled templates.
  • Improved filters.
  • Added hot reloading for modules (.ts, .js) and fixed some issues.
  • The undocumented data filter is disabled by default.

0.10.2 - 2020-12-17

Fixed

  • Don’t add the .html extension to files with a subextension. For example scripts.js.njk should be saved as scripts.js instead of scripts.js.html. #13
  • Refresh the Deno cache with lume --upgrade.

0.10.1 - 2020-12-16

Fixed

  • The error on handling <pre> elements in Markdown.

0.10.0 - 2020-12-16

Added

  • New plugin to use Pug as a template engine. #10
  • New functions search.previousPage() and search.nextPage().
  • Support for definition lists (<dl>) in Markdown.
  • Improved the default 404 error page. Now it displays a list of files and subdirectories.
  • New option templateEngine to configure the template engine used for every page. #11

Fixed

  • Live reload didn’t always work with HTML.
  • HTTP server timeout on missing /index.html.
  • Nunjucks cache didn’t detect the changes to included templates.
  • Showing the version on upgrade. #9
  • url filter in Markdown.
  • url filter to handle hashes and queries (such as #hashid and ?query=value)

0.9.12 - 2020-12-07

Fixed

  • The css plugin uses only the postcss-import and postcss-nesting plugins because the others fail on Deno.

0.9.11 - 2020-12-06

Fixed

  • The lume --upgrade error.

0.9.10 - 2020-12-06

Fixed

  • Updated dependencies.

0.9.9 - 2020-12-01

Fixed

  • Async script runner no longer exits before all promises are resolved. #7
  • Improved the --upgrade command.

0.9.8 - 2020-12-01

Fixed

  • Removed a failing dependency.

0.9.7 - 2020-12-01

Added

  • Support for executing JavaScript functions with lume.script() along with CLI commands.
  • New CLI arguments --src and --dest to override the corresponding options.
  • New property site.flags that saves all arguments after double dash, like the ones in lume --serve -- flag1 flag2.

Fixed

  • Fixed multi-command scripts in Linux. #7
  • Replaced dev.jspm.io with jspm.dev for dependencies.
  • Replaced denopkg.com with cdn.jsdelivr.net for dependencies. #8
  • Updated highlight.js to 10.x.

0.9.6 - 2020-11-28

Fixed

  • Creating multiple pages with generators.
  • Updated dependencies.
  • Simplify the code generated by lume --init.
  • Multiple commands joined with && and &. #7

0.9.5 - 2020-11-25

Added

  • Support for async generators to create pages.
  • Predefined values for attr filter.
  • New option server to configure the local server, having properties port and page404.

Changed

  • Removed the documentation from the main repository.

Fixed

  • The version number returned by lume -v.

0.9.4 - 2020-11-20

Fixed

  • Broken pipe errors on the server.

0.9.3 - 2020-11-13

Fixed

  • The version number returned by lume -v.

0.9.2 - 2020-11-13

Added

  • CLI command --upgrade.

Changed

  • Renamed the --version shortcut -V to -v.

Fixed

  • The denjucks installation. #6

0.9.1 - 2020-11-06

Fixed

  • @import CSS of the css() plugin, using _includes as fallback.

0.9.0 - 2020-11-04

Added

  • New method script() to execute scripts like a task runner.
  • Allow running scripts in events.
  • Autodiscover 404.html in the built-in server to handle the 404 responses.

Fixed

  • Ignore the node_modules directory by default.
  • Show an error if the cwd is not a directory.
  • Enable the attr filter by default.

0.8.1 - 2020-10-28

Added

  • New method ignore() to ignore files and directories.

Fixed

  • The version number on lume --version.

0.8.0 - 2020-10-27

Added

  • New function loadAssets() to register asset loaders.
  • New CLI argument to build the site in a different directory and even to choose a different _config.js file.

Changed

  • Renamed load() to loadPages() and removed the asset parameter.
  • Renamed data() to loadData().
  • Renamed helper() to data().
  • Updating files, when watching, dispatches the events beforeUpdate and afterUpdate (instead of beforeBuild and afterBuild).

0.7.3 - 2020-10-17

Changed

  • Removed the version from the import URL in the _config.js file generated with --init.

Fixed

  • Support special characters in the URL on the local server.
  • Rebuild inside a try…catch to prevent death on error.

0.7.2 - 2020-10-10

Fixed

  • Updated the version in the CLI.

0.7.1 - 2020-10-10

Fixed

  • Permalinks not respecting the prettyUrls option. #1
  • Improved the docs about updating the Lume version.

0.7.0 - 2020-10-09

Added

  • Events beforeBuild and afterBuild.
  • Helper paginate().
  • Function site.process().
  • Option prettyUrls, which is true by default.

Removed

  • The transformers site.beforeRender() and site.afterRender(). Use site.process() instead, which is an equivalent to afterRender.

Fixed

  • Improved performance by executing some operations in parallel.
  • Page duplications.
  • The url filter with non-string values.

0.6.0 - 2020-09-28

Added

  • New parameter for search.pages() to sort pages alphabetically.
  • New argument --help and aliases -h and -V for CLI.
  • New plugin eta to support the Eta template engine.
  • New function helper to assign global helpers that can be used in templates.

Removed

  • The parameters path and recursive in search.pages().

Fixed

  • The url filter with relative paths.
  • PostCSS incompatibility with Deno.

0.5.1 - 2020-09-25

Fixed

  • The version variable.

0.5.0 - 2020-09-24

Added

  • Ability to generate multiple pages using generators.

Changed

  • Replaced pathPrefix and url with location.

Fixed

  • url filter bugs.

0.4.0 - 2020-09-22

Added

  • Ability to include the date in the filename.
  • New function search.folder().
  • New option --dev to build in development mode.

Fixed

  • Front matter detection.
  • Site rebuild after creating or removing directories and files.
  • Improved the url filter.
  • Use a content hash to detect real file changes.
  • Tags propagation.
  • Ensure the beforeRender transformers are executed only once.

0.3.1 - 2020-09-19

Fixed

  • Use a temporaly fork of Denjucks to avoid loading bugs.

0.3.0 - 2020-09-19

Added

  • New plugin svg to optimize SVG files.
  • New plugin dom to manipulate HTML using the DOM API.
  • New filter classname to manipulate CSS classes.
  • New filter attributes to manipulate HTML attributes.
  • First tests.

Changed

  • Renamed explorer to search.

Fixed

  • Refactored source load and reload.
  • Explorer returning wrong results.
  • Live reload.

0.2.3 - 2020-09-14

Fixed

  • Moved the WebSocket script to server.js to avoid reading problems.

0.2.2 - 2020-09-13

Added

  • New command lume --version.

Fixed

  • CLI installation.

0.2.1 - 2020-09-13

Fixed

0.2.0 - 2020-09-13

Added

  • New command lume --init to create a _config.js file.

Changed

  • Merged the postcss and stylecow plugins in the new css plugin.

Fixed

  • The JSX engine.

0.1.0 - 2020-09-13

The first version.